从文件发出读取空间

Issue reading space from file

本文关键字:读取 空间 文件      更新时间:2023-10-16

我正试图从一个文件中读取一行,其中有空格。尽管我做了所有的尝试,做了所有的研究,似乎都没有效果,这是我目前的尝试

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

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

。您读取一行(假设该行不超过78个字符)。那你为什么要这么做?

in_file >> buff;

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

但是最好使用std::string和自由函数std::getline,这样你就不必指定行长度了。

std::string buff;
std::getline(in_file, buff);

in_file >> buff;

将清除刚刚从文件中读取的buff的内容。如果您使用调试器查看buff的内容,那么您将看到这种情况的发生。

由于您正在使用c++,我建议您使用stl字符串而不是字符数组。

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