读取文件.txt C++
问题描述:
如何从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;
}
答
要读取行由行,使用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'调用看起来很像过早优化。 –
如何使用'std :: getline()'? –