1. ホーム
  2. c++

[解決済み] C++でvectorを使わずに文字列を配列に分割する方法

2022-03-03 15:43:09

質問

スペースで区切られた文字列を文字列の配列に挿入しようとしています。 がない場合 C++でvectorを使用しています。例えば

using namespace std;
int main() {
    string line = "test one two three.";
    string arr[4];

    //codes here to put each word in string line into string array arr
    for(int i = 0; i < 4; i++) {
        cout << arr[i] << endl;
    }
}

を出力してほしい。

test
one
two
three.

C++で文字列 > 配列を尋ねる他の質問がすでにあることを知っていますが、私の条件を満たす答えを見つけることができませんでした:ベクトルを使用せずに文字列を配列に分割します。

どのように解決するのですか?

文字列をストリームにするのは std::stringstream クラス (そのコンストラクタはパラメータとして文字列を受け取ります) を使用します。いったん構築されると >> 演算子を使用すると、(通常のファイルベースのストリームと同様に)抽出、または トークン化 という単語を抽出する。

#include <iostream>
#include <sstream>

using namespace std;

int main(){
    string line = "test one two three.";
    string arr[4];
    int i = 0;
    stringstream ssin(line);
    while (ssin.good() && i < 4){
        ssin >> arr[i];
        ++i;
    }
    for(i = 0; i < 4; i++){
        cout << arr[i] << endl;
    }
}