2017-02-18 10 views
1

Как читать строки с space s с file.txt и записывать их в моем vector? У меня есть строка, которая состоит из многих слов, но мой цикл не видит, что и читать их по одному и печати таким образом:Прочтите файл .txt C++

К примеру, у меня есть строка в файле:

Hello, my friends,how are you? 

Hello,James, we are fine. 

И в моей консоли, я вижу:

Hello, 
my 
friends 
.... 
fine 

Это мой цикл:

while(rRecord»str) 
{ 
    lines.push_back(str); 
} 

И моя функция, которая печатает мои слова:

void printRecord(int& numStr,struct winsize w,std::vector<std::string>& lines) 
{ 

for (int i = numStr; i < numStr + w.winsize::ws_row-1; i++) 
{ 

    if (i>=lines.size()) 
    break; 
    else 
    std::cout « lines[i] « std::endl; 

} 

    numStr += w.winsize::ws_row; 
} 
+0

Как насчет использования 'std :: getline()'? –

ответ

0

Чтобы прочитать строку за строкой, используйте std::getline, как это:

std::string line; 
while (std::getline(inFile, line)) { 
    lineVector.push_back(std::move(line)); 
} 

std::move означает, что, когда vector создает новый элемент, он может «украсть» внутренний буфер от line, то есть line теперь будет пустой строкой, но сохранит дополнительное выделение + копию.


Имейте в виду, что смешивание getline с >> обычно не является хорошей идеей, потому что >> оставит ни завершающие пробельные, включая символ новой строки, в потоке, то есть вы получите неожиданные результаты в следующий раз, когда вы пытаетесь getline.

+0

Спасибо за ответ, попробуем его использовать –

+1

Вызов 'std :: move' очень похож на преждевременную оптимизацию. –

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