[英]How do I store multiple values from user input into a vector at once (in c++)?
[英]C++ store string sentences from user input into a vector
我是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
問題是循環內的ignore
調用。
std::getline
將默默地吃掉尾隨的換行符,但是由於您隨后調用ignore
,因此必須輸入第二行才能使ignore
得到滿足。
只需從循環中刪除ignore
調用,它便會按預期工作。
您是否嘗試放入cin.clear();? cin.sync(); 在getline函數之前? cin和getline在您同時使用它們時會給您帶來問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.