从文件发出阅读空间

时间:2013-03-22 18:50:22

标签: c++ parsing file-io stream getline

我正在尝试从包含空格的文件中读取一行。尽管我尝试了所有的东西和我所有的研究,似乎没有任何效果,这是我目前的尝试

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 ++不是那么好,所以我很可能会错过一些东西。

3 个答案:

答案 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。