#include<iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using std::cout;
using std::endl;
using std::vector;
using std::string;
using std::stringstream;
using std::for_each;
int main (void){
string s1 = "5";
string s2 = "1 4 -1 6 0";
vector<int> v;
int val = 0;
stringstream ss(s1);
ss >> val;
cout << "val: " << val << endl;
ss.str(s2);
while(val > 0){
ss >> val;
cout << "val: " << val << endl;
v.push_back(val);
}
for_each(v.begin(), v.end(), [](int& i){cout << i << endl;});
return 0;
}
编译代码时:
g++-ggdb-std=c++14-Wall
<filename.cpp>
s1
被提取并输入到
val
在第二种情况下,试图从
s2
并输入到
瓦尔
不起作用。
s1
因此循环无限运行。回路的测试条件,即:。,
val > 0
,其依据如下:
参考:
std::basic_istream::operator>>
短暂性脑缺血发作