读取文件.txt C++
Read a file .txt C++
我应该如何从 file.txt
中读取带有 space
的行并将其记录在我的 vector
中?
我有一行包含很多单词,但我的循环没有看到它并一个一个地读取它们并以这种方式打印:
例如,我在文件中有一个字符串:
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;
}
阅读line-by-line,使用std::getline
,像这样:
std::string line;
while (std::getline(inFile, line)) {
lineVector.push_back(std::move(line));
}
std::move
表示当vector
创建新元素时,它可以"steal"来自line
的内部缓冲区,意思是line
现在将是一个空字符串,但节省了额外的分配+副本。
请注意,将 getline
与 >>
混合通常不是一个好主意,因为 >>
会在流中留下任何尾随空格,包括换行符,这意味着您得到下次尝试 getline
.
时出现意外结果
我应该如何从 file.txt
中读取带有 space
的行并将其记录在我的 vector
中?
我有一行包含很多单词,但我的循环没有看到它并一个一个地读取它们并以这种方式打印:
例如,我在文件中有一个字符串:
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;
}
阅读line-by-line,使用std::getline
,像这样:
std::string line;
while (std::getline(inFile, line)) {
lineVector.push_back(std::move(line));
}
std::move
表示当vector
创建新元素时,它可以"steal"来自line
的内部缓冲区,意思是line
现在将是一个空字符串,但节省了额外的分配+副本。
请注意,将 getline
与 >>
混合通常不是一个好主意,因为 >>
会在流中留下任何尾随空格,包括换行符,这意味着您得到下次尝试 getline
.