【发布时间】:2017-09-27 22:30:47
【问题描述】:
我是 C++ 的初学者,目前正在学习向量。这是一个简单的代码,程序获取用户输入并将其存储在一个向量中,然后继续打印每个元素的存储值:
int main(){
vector<string> myVector;
string myInput;
int n;
cin>>n;
cin.ignore(numeric_limits<streamsize>::max(),'\n');
for(int i = 1; i <= n;i++){
cout<<"loop count: "<<i<<endl; //added for checking the current loop
getline(cin, myInput);
cin.ignore(numeric_limits<streamsize>::max(),'\n');
myVector.push_back(myInput);
}
for(unsigned int j = 0;j < myVector.size(); j++){
cout<<myVector[j]<<endl;
}
return 0;
}
但是当我运行我的代码时,在用户字符串输入期间,它让我在最终进入下一个循环之前输入两个字符串。该程序只打印出每个循环的第一个输入字符串。所以我的问题是:
1) 这背后的原因是什么?为什么用户需要在进入下一个循环之前输入两个字符串?谁能给我解释一下。
2) 如何解决这个问题?
编辑:这是我的示例输入和输出:
输入:
3
input loop count: 1
we are
the champions
input loop count: 2
no time
for losers
input loop count: 3
we are
the champions
输出:
we are
no time
we are
【问题讨论】:
-
至于你的问题,能否告诉我们你给程序的输入,以及实际和预期的输出?请花一些时间到read about how to ask good questions。
-
getline得到一整行 - 包括空格。空格是字符串中完全有效的字符...
标签: c++