سؤال

وأنا أحاول أن القراءة من الملف: الملف هو متعدد الأسطر وأساسا أنا بحاجة للذهاب على كل "كلمة". كلمة كونها غير الفضائية أي شيء.

أن

عينة ملف الإدخال على النحو التالي:

<اقتباس فقرة>   

وملف عينة:

     

واختبار 2D
      كلمة 3.5
      إدخال
      {

        اختبار 13.5 12.3
        آخر {
         اختبار 145.4
         }
       }

وهكذا حاولت شيئا من هذا القبيل:

ifstream inFile(fajl.c_str(), ifstream::in);

if(!inFile)
{
    cout << "Cannot open " << fajl << endl;
    exit(0);
}

string curr_str;
char curr_ch;
int curr_int;
float curr_float;

cout << "HERE\n";
inFile >> curr_str;

cout << "Read " << curr_str << endl;

والمشكلة هي عندما يقرأ الخط الجديد أنها معلقة فقط. قرأت كل شيء قبل الاختبار 13.5 ولكن بمجرد أن يصل هذا الخط هو لا تفعل أي شيء. يمكن لأحد أن يقول لي ما أقوم به خطأ؟ أي أفضل اقتراح حول كيفية القيام بذلك ؟؟؟

وأنا أساسا في حاجة للذهاب من خلال ملف والذهاب "كلمة" واحدة (شار غير الأبيض) في ذلك الوقت. I

والشكر

هل كانت مفيدة؟

المحلول

وفتح ملف "INFILE 'ولكن يتم القراءة من" الأمراض المنقولة جنسيا :: CIN' أي سبب معين؟

/*
 * Open the file.
 */
std::ifstream   inFile(fajl.c_str());   // use input file stream don't.
                                        // Then you don't need explicitly specify
                                        // that input flag in second parameter
if (!inFile)   // Test for error.
{
    std::cerr << "Error opening file:\n";
    exit(1);
}

std::string   word;
while(inFile >> word)  // while reading a word succeeds. Note >> operator with string
{                      // Will read 1 space separated word.
    std::cout << "Word(" << word << ")\n";
}

نصائح أخرى

ولست متأكدا كيف "في روح" مكتبة iostream هذا هو، ولكن يمكنك أن تفعل ذلك مع المدخلات غير منسق. شيء من هذا القبيل:

char tempCharacter;
std::string currentWord;
while (file.get(tempCharacter))
{
    if (tempCharacter == '\t' || tempCharacter == '\n' || tempCharacter == '\r' || tempCharacter == ' ')
    {
        std::cout << "Current Word: " << currentWord << std::endl;
        currentWord.clear();
        continue;
    }
    currentWord.push_back(tempCharacter);
}

هل هذا العمل؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top