2010-10-15 1 views
1

У меня есть этот код, который читается из файла marks.txt.C++: прочитать текстовый файл формы и преобразовать в проблему int?

#include <iostream> 
#include <fstream> 
#include <string> 
#include <sstream> 
using namespace std; 

int main() { 
    string name,result; 
    int number1; 
    ifstream myfile ("marks.txt"); 
    if (myfile.is_open()) 
    { 
    while (!myfile.eof()) 
    { 
     getline (myfile,name,'\t'); 
     getline (myfile,result,'\t'); 
     stringstream(result) >> number1; 
     cout << number1; 


    } 

    myfile.close(); 

    } 

    else cout << "Unable to open file"; 

    return 0; 
} 

с моим файлом marks.txt состоит из:

john 20 

Но когда я запустил программу. Вывод Number1 равен 36. Как я могу преобразовать строку результата в int правильно?

ответ

2

Обратите внимание, что вы передаете \t (символ табуляции) в качестве разделителя на getline. Вы уверены, что используете вкладку в своем исходном файле? Если вы используете пробел или любой другой символ, все входные данные войдут в name, и ваш result будет пустым, что не даст number1 неопределенным. Я подозреваю, что это причина, по которой вы получаете 36 из ниоткуда.

+0

Да. Я пропустил это. благодаря – diehell

Смежные вопросы