2017-02-18 231 views
1

如何从file.txt中读取space的行并将其记录在我的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'调用看起来很像过早优化。 –