我正在尝试从包含空格的文件中读取一行。尽管我尝试了所有的东西和我所有的研究,似乎没有任何效果,这是我目前的尝试
void read_name(fstream& in_file, comp& cmp)
{
char buff[80];
in_file.getline(buff, 79, '\n');
in_file >> buff;
cout << "NAME: " << buff << endl;
cmp.set_name(buff);
in_file.getline(buff, 79);
}
无论出于何种原因,这仍然会在看到空格然后停止之前读取。任何帮助将非常感激。我用直接的C ++不是那么好,所以我很可能会错过一些东西。
答案 0 :(得分:1)
in_file.getline(buff, 79, '\n');
有。你读了一行(假设这行不超过78个字符)。那么你为什么要去做呢?
in_file >> buff;
这将用下一个单词覆盖你刚读过的那一行。如果你想要下一行,那么再次调用getline。
但最好使用std::string
和自由函数std::getline
,这样您就不必指定行长度。
std::string buff;
std::getline(in_file, buff);
答案 1 :(得分:1)
该行
in_file >> buff;
正在擦除你刚从文件中读取的buff的内容。 如果您通过调试器逐步查看buff的内容,那么您会看到这种情况发生。
答案 2 :(得分:0)
由于您使用的是c ++,我建议您使用stl字符串而不是char数组。
std::string linestr;
while( std::getline(input, linestr) )
{
// process line
}
输入是你的ifstream。