二重引用符で囲まれたコンマと文字列を含むC ++ CSV行

dimxasnewfrozen

私はC ++でCSVファイルを読んでおり、行の形式は次のとおりです。

「プライマリ、セカンダリ、サード」、「プライマリ」、、「セカンダリ」、18、4、0、0、0

(空の値に注意してください)

私がする時:

while (std::getline(ss, csvElement, ',')) {
   csvColumn.push_back(csvElement);
}

これにより、最初の文字列が正しくない部分に分割されます。

反復するときに文字列を保持するにはどうすればよいですか?上記を組み合わせて、二重引用符で区切られた行を取得しようとしましたが、ワイルドな結果が得られました。

クリストフ

引用符の間にあるかどうかに応じて、コンマを解釈する必要があります。これは複雑すぎますgetline()

解決策は、を使用して行全体を読み取り、getline()文字列を1文字ずつ反復して行を解析し、二重引用符の間にあるかどうかを示すインジケーターを維持することです。

これが最初の「生の」例です(二重引用符はフィールドで削除されず、エスケープ文字は解釈されません):

string line; 
while (std::getline(cin, line)) {        // read full line
    const char *mystart=line.c_str();    // prepare to parse the line - start is position of begin of field
    bool instring{false};                
    for (const char* p=mystart; *p; p++) {  // iterate through the string
        if (*p=='"')                        // toggle flag if we're btw double quote
            instring = !instring;     
        else if (*p==',' && !instring) {    // if comma OUTSIDE double quote
            csvColumn.push_back(string(mystart,p-mystart));  // keep the field
            mystart=p+1;                    // and start parsing next one
        }
    }
csvColumn.push_back(string(mystart));   // last field delimited by end of line instead of comma
}

オンラインデモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

二重引用符とコンマを含むCSV解析文字列

分類Dev

文字列を二重引用符で囲むと、新しい行に終了引用符が追加されます

分類Dev

一重引用符と二重引用符の両方を含む文字列からコマンドを実行します

分類Dev

カンマと二重引用符を含む文字列をCSVに書き込みます

分類Dev

sudoとして実行される関数に二重引用符で囲まれた文字列を渡す方法

分類Dev

二重引用符とカンマ区切り文字を使用して、二重引用符と文字列(行と列の任意の数)を含むcsvファイルを読み取ります

分類Dev

複数行の二重引用符で囲まれた文字列は、パイプされる後続の単一引用符で囲まれたコマンドの履歴拡張をトリガーします

分類Dev

引用符で囲まれた文字列csvファイル内に複数の二重引用符がある

分類Dev

bashで引用符で囲まれた変数を使用して、ネストされた一重引用符と二重引用符が多数あるコマンドを実行する方法

分類Dev

Perlは同じ行の複数の文字列に一致します(二重引用符と一重引用符で囲まれたもの)

分類Dev

内部にコンマを含む二重引用符があるcsvを読み取ります

分類Dev

文字列をカンマで分割しますが、.csvファイルでシェルスクリプトを使用して二重引用符で囲まれたカンマを無視しますか?

分類Dev

カンマ付きの引用符で囲まれていない文字列を含むcsvをインポートします。すべての行に対して-3番目のコンマごとを無視しますか?

分類Dev

カンマで区切られ、二重引用符でカプセル化されたCSV内の間隔の二重引用符を削除します

分類Dev

コンマと二重引用符を含むcsvファイルを区切る最良の方法は何ですか?

分類Dev

CSVファイルの文字列を囲む二重引用符を削除します

分類Dev

csv 文字列内の二重引用符とコンマを処理する方法は?

分類Dev

コマンドを実行しますが、一重引用符と二重引用符はすでに使用されています

分類Dev

python pandasread_csvは二重引用符で囲まれた文字を2回読み取ることができません

分類Dev

csvに二重引用符を書き込むと、3つの二重引用符が生成されます

分類Dev

Presto(Athena)引用符で囲まれたコンマを含むCSVファイルの読み込み

分類Dev

CSVを使用した円記号または二重引用符を含むPostgres配列構文

分類Dev

長い行を二重引用符で囲む方法は?

分類Dev

二重引用符とカンマが埋め込まれたCSVファイルを読み取る

分類Dev

Awkを使用して、二重引用符で囲まれた列値を使用して行をフィルタリングする方法

分類Dev

Unix-CSVの最初の列を二重引用符で囲みます

分類Dev

ファイルをfindコマンドから1行にグループ化し、各ファイルを二重引用符で囲む方法は?

分類Dev

CSVファイルから二重引用符で囲まれた数値を読み取ります

分類Dev

埋め込まれた二重引用符とカンマを使用してCSVをデコードする単一の正規表現

Related 関連記事

  1. 1

    二重引用符とコンマを含むCSV解析文字列

  2. 2

    文字列を二重引用符で囲むと、新しい行に終了引用符が追加されます

  3. 3

    一重引用符と二重引用符の両方を含む文字列からコマンドを実行します

  4. 4

    カンマと二重引用符を含む文字列をCSVに書き込みます

  5. 5

    sudoとして実行される関数に二重引用符で囲まれた文字列を渡す方法

  6. 6

    二重引用符とカンマ区切り文字を使用して、二重引用符と文字列(行と列の任意の数)を含むcsvファイルを読み取ります

  7. 7

    複数行の二重引用符で囲まれた文字列は、パイプされる後続の単一引用符で囲まれたコマンドの履歴拡張をトリガーします

  8. 8

    引用符で囲まれた文字列csvファイル内に複数の二重引用符がある

  9. 9

    bashで引用符で囲まれた変数を使用して、ネストされた一重引用符と二重引用符が多数あるコマンドを実行する方法

  10. 10

    Perlは同じ行の複数の文字列に一致します(二重引用符と一重引用符で囲まれたもの)

  11. 11

    内部にコンマを含む二重引用符があるcsvを読み取ります

  12. 12

    文字列をカンマで分割しますが、.csvファイルでシェルスクリプトを使用して二重引用符で囲まれたカンマを無視しますか?

  13. 13

    カンマ付きの引用符で囲まれていない文字列を含むcsvをインポートします。すべての行に対して-3番目のコンマごとを無視しますか?

  14. 14

    カンマで区切られ、二重引用符でカプセル化されたCSV内の間隔の二重引用符を削除します

  15. 15

    コンマと二重引用符を含むcsvファイルを区切る最良の方法は何ですか?

  16. 16

    CSVファイルの文字列を囲む二重引用符を削除します

  17. 17

    csv 文字列内の二重引用符とコンマを処理する方法は?

  18. 18

    コマンドを実行しますが、一重引用符と二重引用符はすでに使用されています

  19. 19

    python pandasread_csvは二重引用符で囲まれた文字を2回読み取ることができません

  20. 20

    csvに二重引用符を書き込むと、3つの二重引用符が生成されます

  21. 21

    Presto(Athena)引用符で囲まれたコンマを含むCSVファイルの読み込み

  22. 22

    CSVを使用した円記号または二重引用符を含むPostgres配列構文

  23. 23

    長い行を二重引用符で囲む方法は?

  24. 24

    二重引用符とカンマが埋め込まれたCSVファイルを読み取る

  25. 25

    Awkを使用して、二重引用符で囲まれた列値を使用して行をフィルタリングする方法

  26. 26

    Unix-CSVの最初の列を二重引用符で囲みます

  27. 27

    ファイルをfindコマンドから1行にグループ化し、各ファイルを二重引用符で囲む方法は?

  28. 28

    CSVファイルから二重引用符で囲まれた数値を読み取ります

  29. 29

    埋め込まれた二重引用符とカンマを使用してCSVをデコードする単一の正規表現

ホットタグ

アーカイブ