1. ホーム
  2. c++

[解決済み] C++の関数getlineで2つ以上のデリミタを使用することは可能ですか?重複

2022-03-01 15:41:19

質問

getline関数で2つ以上のデリミタを使うにはどうしたらいいか、それが私の問題です。

プログラムはテキストファイルを読み込みます。各行は次のようになります。

   New Your, Paris, 100
   CityA, CityB, 200

私はgetline(file, line)を使っていますが、CityA、CityB、そして番号の順に取得したいのに、行全体が取得されてしまいます。','というデリミタを使うと、次の行がいつなのか分からなくなるので、何か解決方法を考えています。

でも、カンマと㊧を区切り文字として使うのはどうなんだろう? ちなみに、charではなくstring型を操作しているので、strtokは使えません:/。

スクラッチ

string line;
ifstream file("text.txt");
if(file.is_open())
   while(!file.eof()){
     getline(file, line);
        // here I need to get each string before comma and \n
   }

解決方法は?

を使って行を読むことができます。 std::getline に渡し、その行を std::stringstream というカンマで区切られた値を読み取ります。

string line;
ifstream file("text.txt");
if(file.is_open()){
   while(getline(file, line)){   // get a whole line
       std::stringstream ss(line);
        while(getline(ss, line, ',')){
             // You now have separate entites here
        }
   }