1. ホーム
  2. c++

[解決済み] カンマ区切りの std::string をパースする [重複] 。

2022-04-28 11:58:51

質問

カンマで区切られた数字のリストを含むstd::stringがある場合、数字をパースして整数配列に入れる最も簡単な方法は何でしょう?

私はこれを一般化して他のものをパースすることは望んでいません。カンマで区切られた整数の文字列、例えば "1,1,1,2,1,1,0"のようなものです。

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

数字を1つずつ入力し、以下の文字があるかどうかを確認します。 , . もしそうなら、それを破棄する。

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

int main()
{
    std::string str = "1,2,3,4,5,6";
    std::vector<int> vect;

    std::stringstream ss(str);

    for (int i; ss >> i;) {
        vect.push_back(i);    
        if (ss.peek() == ',')
            ss.ignore();
    }

    for (std::size_t i = 0; i < vect.size(); i++)
        std::cout << vect[i] << std::endl;
}