2017-11-25 28 views
0

std C++を使用すると、コンマで区切られた文字列を分割したいが、一重引用符で囲まれた文字列のコンマは無視する。たとえば、次のようにカンマ区切りカンマ区切りのコンマ区切り

1、 '2,3'、4,5 '6,7'、

分割が

1 
'2,3' 
4 
5 
'6,7' 
8 

が、私はこの最高の正規表現で扱うことかもしれないと思うとなり8、パターンを構築する方法がわかりません。正規表現のないソリューションも大歓迎です。ありがとう。

答えて

0

は、私はC++の構文がどうなるかわからないんだけど、ここにいくつかの擬似コードです:

vector<string> split(const string& value) 
{ 
    bool is_escaped = false; 
    vector<char> current; 
    vector<string> result; 

    for (char c : value) 
    { 
     if (c == '\'') 
     { 
      is_escaped = !is_escaped; 
     } 

     if (c == ',' && !is_escaped) 
     { 
      result.push_back(string(current.begin(), current.end()); 
      current.clear(); 
     } 
     else 
     { 
      current.push_back(c); 
     } 
    } 

    result.push_back(string(current.begin(), current.end()); 
    return result; 
} 

は明らかにあなたはそれがC++有効であるために調整する必要がありますが、それはトリックを行う必要があります。

+0

ちょうどいくつかの変更を加えて、ほとんどの作業をしました。私は標準ライブラリにもっと慣れる必要があると思います。ありがとう! – user638473

関連する問題