我在理解如何使用cin.getline和cin.get方面遇到了一些麻烦。我相信我理解这个问题,只是想弄清楚如何结合使用它们来解决问题。
我正在读取一个通过命令行通过cin读入的文本文件。
我创建了一个名为spaceStation的向量向量,我想用字符加载它。例如,这里是文件的一小部分
M
4
2
//Possible comments
....
#...
E#..
#...
为此,我只使用cin>>正确阅读前三个字符加载到变量中。现在我需要创建一个循环来在同一行读取这些多个字符。 1)我应该忽略所有注释2)我想运行while循环,直到达到一个不包含更多信息的新行
我创建了一个字符串s,所以getline(cin,s)应该加载整行。我的问题是我应该创建一个cstring,以便我可以访问要加载的单个字符,还是有办法使用cin.get()来提取s接收的行的各个字符。
答案 0 :(得分:0)
string s;
vector<string> v; // this is the best choice you can iterate like this to get char by char:
for (int i=0;i<v.size();i++)
for (int j=0;j<v[i].size();j++)
v[i][j];
// or like this to get strings
for (int i=0;i<v.size();i++)
v[i];
getline(cin, s); // this is to read the \n (new line) after int in the 3rd line
while (getline(cin,s))// till end of file
{
if (s.find_first_not_of(".#E") == -1)
{
v.push_back(s);
}
}
for (int i=0;i<v.size();i++)
cout<<v[i]<<endl;
您还可以利用字符串类函数。