0

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

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++ 不是很好,所以我很可能只是遗漏了一些东西。

4

3 回答 3

1
in_file.getline(buff, 79, '\n');

那里。您阅读了一行(假设该行不超过 78 个字符)。那你为什么要去做这件事?

in_file >> buff;

这将用下一个单词覆盖您刚刚阅读的行。如果您想要下一行,请再次调用 getline。

但最好使用std::stringfree 函数std::getline,这样您就不必指定行长。

std::string buff;
std::getline(in_file, buff);
于 2013-03-22T18:57:04.410 回答
1

线

in_file >> buff;

正在清除您刚刚从文件中读取的 buff 的内容。如果您使用调试器单步调试代码并观察 buff 的内容,那么您会看到这种情况发生。

于 2013-03-22T18:58:40.783 回答
0

Since you are using c++ I recommend you use stl string instead of char arrays.

std::string linestr;
while( std::getline(input, linestr) )
{
   // process line
}

where input is your ifstream.

于 2013-03-22T18:53:29.827 回答