【问题标题】:sstream not populating vector C++sstream 不填充向量 C++
【发布时间】:2015-08-11 02:41:58
【问题描述】:

在命令行中输入:

1 2 3

它存储在“line”中,我的向量只填充了

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;}

【问题讨论】:

  • 尝试用std::getline(cin, line);替换cin &gt;&gt; line;

标签: c++ vector sstream


【解决方案1】:

你的问题在这里:

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2017-01-07
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多