2013-02-13 3 views
0

Я хотел бы прочитать из текстового файла и формат файлаввода и обработки файлов данных

Метод 1
Метод 2
Вставка 3 «Джеймс Тан»

настоящее время я использую ifstream, чтобы открыть текстовый файл и прочитать элементы, но когда я использую >> для чтения строк, что заставляет имя не полностью читать как «Джеймс Тан». Приведенный ниже код и вывод.

ifstream fileInput; 

    if(fileInput.is_open()){ 
     while(fileInput.good()){ 
    fileInput >>methondName>>value>>Name; 
    ...... 

Выход

methodName = Method, Method, Insert 
value = 1, 2, 3 (must be a usigned integer) 
Name = James 

Что такое лучший способ обработать чтение строк и содержание. Мне говорили о getline. Но я понимаю, что getline полностью читается как строка, а не одно слово одним словом.

Вперед Fstream очень быстро ?. причина, я хотел бы обработать 500000 строк данных, и если ifstream не быстро, какие у меня есть другие варианты.

Прошу совета по этому вопросу.

+1

Вы не должны делать 'while (stream.good()) ...', и вам даже не нужно проверять, открыт ли файл. Просто откройте файл и сделайте 'while (stream >> input >> input2) ...'. –

ответ

3

Метод 1
Метод 2
Вставка 3 "Джеймс Тан"

я понимаю, вы имеете в виду, что файл состоит из нескольких строк. Каждая строка начинается со слова «Метод» или слова «Вставить», в каждом случае следует число. Кроме того, строки, которые начинаются с «Insert», имеют название с несколькими словами в конце.

Это правильно? Если это так, попробуйте:

ifstream fileInput("input.txt"); 
std::string methodName; 
int value; 
while (fileInput >> methodName >> value) { 
    std::string name; 
    if(methodName == "Insert") 
    std::getline(fileInput, name); 

    // Now do whatever you meant to do with the record. 
    records.push_back(RecordType(methodName, value, name); // for example 
} 
Смежные вопросы