在命令行中输入:
1 2 3
哪个存储在' 行'我的载体只有
填充1
我做错了什么? 这是代码
string line;
string buffer;
int a,b,base;
cin >> line;
stringstream ss(line);
std::vector<string> tokens;
while( ss >> buffer){
tokens.push_back(buffer);
}
for(int i=0; i<tokens.size(); i++){cout << tokens[i] << endl;}
答案 0 :(得分:4)
你的问题在这里:
cin >> line;
注意这个功能
operator>>(istream& is, string& str)
获取所有字符,直到第一次出现空格(在输入1 2 3
的情况下,它在1
之后的空格处停止)
尝试使用函数getline()
,它会在第一次出现换行符之前读取字符串。
这似乎有效:
#include <string>
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(void) {
string line;
string buffer;
int a,b,base;
getline(cin, line);
stringstream ss(line);
vector<string> tokens;
while( ss >> buffer){
tokens.push_back(buffer);
}
for(int i=0; i<tokens.size(); i++){cout << tokens[i] << endl;}
return 0;
}