我正在阅读文本文件并加载到std::vector<std::string> course
,当我尝试根据course.size()
和course[i].size
进行打印时,它只打印最后一行。
以下是代码:
int main(int argc, char** argv) {
ifstream fin(argv[1]);
vector<string> course;
string line;
while (getline(fin, line)) {
course.push_back(line);
}
for (int i = 0; i < course.size(); i++) {
for (int j = 0; j < course[i].size(); j++) {
cout << course[i][j];
}
}
return 0;
}
通过添加:
尝试删除'\r'
if (!line.empty() && line[line.size() - 1] == '\r') {
line.erase(line.size() - 1);
}
但是,这只是每行[i][j]
打印出来。
数据如下所示:
xxxxxxxxxxxx
xxx yyyxxx
xxxXXYYxxyyy
答案 0 :(得分:1)
std::getline
不将分隔字符(在您的情况下为换行符)添加到输出字符串。因此,std::string
的{{1}}中没有一个包含换行符。因此,您需要在编写每个字符串后自己输出换行符。
然后请注意内部std::vector<std::string> course
循环是完全没必要的。 for
的{{1}}超载/专精,因此您可以简化为:
operator<<
如果你坚持内循环:
std::string