while 循环中的迭代在不接受输入的情况下运行和结束?
Iteration in while loop runs and ends without taking inputs?
我想根据当前输入拆分字符串并将其存储在 result
双端队列中,然后再次执行此操作 while (count-- > 0)
count = 3 在这种情况下。
输入字符串:abc def ghi
while (count-- > 0){
cout << " start of while loop" << endl;
deque<string> result;
string str2;
cin >> str2;
istringstream iss(str2);
for(string s; iss >> s; ){
result.push_back(s);
}
cout << "result.size() " << result.size() << endl;
}
}
问题: 结果大小仍然为 1,while 循环自动运行 3 次。
Todo : 结果大小应该是 3 in 1 iteration
输出:
start of while loop
abc def ghi
result.size() 1
start of while loop
result.size() 1
start of while loop
result.size() 1
我本应该能够输入 3 次,但是 while 循环自动运行了 3 次而没有输入并结束。
为什么会这样?
而不是这个:
while (count-- > 0){
cout << " start of while loop" << endl;
deque<string> result; // result created inside loop
你想要这个
deque<string> result; // result created outside loop
while (count-- > 0){
cout << " start of while loop" << endl;
否则,每次循环迭代都会重新创建结果。
此外,听起来您希望将 abc def ghi 视为单个输入,但 cin >> str2
读取的是一个词,而不是一行。要读取一行,请改用 getline
:
getline(cin,str2);
我想根据当前输入拆分字符串并将其存储在 result
双端队列中,然后再次执行此操作 while (count-- > 0)
count = 3 在这种情况下。
输入字符串:abc def ghi
while (count-- > 0){
cout << " start of while loop" << endl;
deque<string> result;
string str2;
cin >> str2;
istringstream iss(str2);
for(string s; iss >> s; ){
result.push_back(s);
}
cout << "result.size() " << result.size() << endl;
}
}
问题: 结果大小仍然为 1,while 循环自动运行 3 次。
Todo : 结果大小应该是 3 in 1 iteration
输出:
start of while loop
abc def ghi
result.size() 1
start of while loop
result.size() 1
start of while loop
result.size() 1
我本应该能够输入 3 次,但是 while 循环自动运行了 3 次而没有输入并结束。 为什么会这样?
而不是这个:
while (count-- > 0){
cout << " start of while loop" << endl;
deque<string> result; // result created inside loop
你想要这个
deque<string> result; // result created outside loop
while (count-- > 0){
cout << " start of while loop" << endl;
否则,每次循环迭代都会重新创建结果。
此外,听起来您希望将 abc def ghi 视为单个输入,但 cin >> str2
读取的是一个词,而不是一行。要读取一行,请改用 getline
:
getline(cin,str2);