我需要从文件中读取并逐行打印
这是带冒号分隔符的文件
Miami:Sunny:USA
London:Rainy:England
并打印如下:
City: Miami Weather:Sunny Country: USA
City: London Weather:Rainy Country: England
然而我得到了这个:
City: Miami Weather: Sun Country USA
London City: Rain Weather: England Country USA
这是我到目前为止所做的:
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
using namespace std;
void read_from_file()
{
string city;
string c;
string w;
fstream file("list.txt");
if (file.is_open())
{
while (file.good())
{
getline(file, city, ':');
cout << " City: " << name;
getline(file, w, ':');
cout << " Weather: " << w;
getline(file, c, ':');
cout << " Country: " << c;
}
file.close();
}
}
int main()
{
read_from_file();
return 0;
}
我认为我的问题冒号getline(file, w, ':');
但是当我放'\n'
时它会崩溃。
有人可以提供帮助吗?
答案 0 :(得分:1)
您所在国家/地区之后没有任何冒号,因此您也不应将其用作分隔符。
更改
getline(file, c, ':');
到
getline(file, c);
因此它将使用默认换行符作为分隔符。
此外,您的代码只会在一行输出所有内容,因此您可能需要更改
cout<<" Country: "<<c;
到
cout<<" Country: "<<c << '\n';
太
也可以考虑阅读Why is iostream::eof inside a loop condition considered wrong?,检查EOF
或file.good()
通常不是检查输入的方法。在你的情况下,它没有任何问题。