在读取文件(ifstream)时,有没有办法指导它创建一个新行?
例如,我希望这件事发生:
MYFILE >>阵列[1] >>阵列[2] >> ENDL;
显然,“endl”是不允许的 . 还有另一种方法吗?
编辑---感谢快速回复的家伙们!
从文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同操作(或直到我希望使用for循环)
使用字符串对我来说很重要,因为它会使我未来的程序更加灵活 .
几个选项:
你可以使用ignore .
myfile >> array[1] >> array[2]; myfile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
或者您可以将每一行读成字符串流
std::string line; std::getline(myfile,line); std::stringstream stream(line); stream >> array[1] >> array[2];
请注意:数组索引从0开始 .
使用 std::getline 将一行读入内存流,然后从中获取两个字符串 .
std::getline
while (cin) { string line; getline(cin, line); stringstream stream; stream << line; stream >> array[1]>>array[2]; }
阅读你的两个项目,然后拨打 myfile.ignore(8192, '\n')
myfile.ignore(8192, '\n')
我不知道这个问题意味着什么 . 这是一种将文件的所有行读入字符串向量的简单方法 . 如果您先执行此操作,可能更容易执行您想要执行的操作 .
std::vector<std::string> lines; std::string line; while (std::getline(myFile, line)) lines.push_back(line);
现在你可以说 lines[4] 得到第五行,或 lines.size() 找出有多少行 .
lines[4]
lines.size()
这应该工作:
stringstream stream; string sLine; int iLine; while (cin) { getline(cin, sLine); stream << sLine; stream >> data[iLine][0] >> data[iLine][1]; }
早期答案的定制版本 .
5 回答
几个选项:
你可以使用ignore .
或者您可以将每一行读成字符串流
请注意:数组索引从0开始 .
使用
std::getline
将一行读入内存流,然后从中获取两个字符串 .阅读你的两个项目,然后拨打
myfile.ignore(8192, '\n')
我不知道这个问题意味着什么 . 这是一种将文件的所有行读入字符串向量的简单方法 . 如果您先执行此操作,可能更容易执行您想要执行的操作 .
现在你可以说
lines[4]
得到第五行,或lines.size()
找出有多少行 .这应该工作:
早期答案的定制版本 .