2

私はコーディングにかなり慣れていないので、誰かが私を助けてくれることを望んでいましたか? スペースで区切られた整数の行を読み取り、それらを (最終的にはリンクされたリストに) ベクトルに解析しようとしています。

したがって、int のベクトルを取得したら、STL ベクトルの反復子がありますが、STL にないリンク リスト内のノードを反復処理するにはどうすればよいですか?

#include <cstdlib>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;

int main(int argc, char** argv) {    
    cout << "Enter some integers, space delimited:\n";
    string someString;
    getline(cin, someString);

    istringstream stringStream( someString );
    vector<string> parsedString;
    char splitToken = ' ';

    //read throguh the stream
    while(!stringstream.eof()){
        string subString;
        getline( stringStream, subString, splitToken);
        if(subString != ""){
        parsedString.push_back(subString);
        }
   }

    return EXIT_SUCCESS;
}
4

2 に答える 2

1

これはスペース区切り文字なので、次のようにしないのはなぜですか。

#include <iostream>
using namespace std;

int main() {
    int a;
    vector<int> v;
    while (cin >> a) {
        v.push_back(a);
    }

    for (int i = 0; i < v.size(); ++i) {
        int b = v[i];
    }

    return 0;
}

そして、ところで、ctrl-Dまたは のような非整数入力は、charこれを終了しwhileます。

于 2013-05-05T04:18:47.390 に答える
1

stringstream次のような区切り記号を自動的に処理できます。

cout << "Enter some integers, space delimited:\n";
string someString;
getline(cin, someString);

istringstream stringStream( someString );
vector<int> integers;
int n;
while (stringStream >> n)
    integers.push_back(n);
于 2013-05-05T04:19:00.573 に答える