在 c++ 中逐行阅读字符串,不要以空格停止

  • 本文关键字:空格 字符串 c++ 逐行 c++
  • 更新时间 :
  • 英文 :


给定一个我自己编写的方法,给出了一个文本文件,我想将项目保存到vector<Object> referenceObject中。它几乎可以工作,但是如果我进入我的文本文件对象,例如:" Book of light ",它只是保存"Book",所以它会停止读取第一个空格。

我阅读了一些其他像我一样的StackOverflow问题,但对于我的问题,它们不起作用。

问:它返回我的文本文件的所有对象,除了我的第一个对象。所以我的列表从index=1开始,而不是从index=0开始。 为什么?

void openfile() {
ifstream inFile;
inFile.open("textfile");
if (inFile.fail()) {
cerr << "error open this file" << endl;
exit(1);
}
string item;
int count = 0;
vector<Object> referenceObject;
while (!inFile.eof()) {
while (getline(inFile, item)) {
inFile >> item;
Object s;
s.setName(item);
referenceCards.push_back(s);
std::cout << count << ' ' << referenceObject.at(count).getName() << endl;
count++;
}
}

当你这样做时:

while (getline(inFile, item)) {  // reads line into item
inFile >> item;             // overwrites item 
// ...                      // do stuff with item
}

您正在阅读第一行,然后立即忽略它(通过用第一个字符串覆盖它,直到第二行的空格(。

相反,只需这样做:

while (getline(inFile, item)) {  // read line into item
// ...                      // do stuff with item
}

此外,请避免此检查:

while (!inFile.eof()) 

请参阅为什么循环条件中的iostream::eof(即'while (!stream.eof((('(被认为是错误的?为什么建议反对它。

最新更新