0

コマンドラインに入力する場合:

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

1 に答える 1

4

あなたの問題はここにあります:

cin >> line;

この機能に注意してください

operator>>(istream& is, string& str)

空白が最初に出現するまでのすべての文字を取得します ( input の場合、 の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;
}
于 2015-08-11T02:54:36.583 に答える