C ++ 14は、引用符を含む引用符付き文字列を逐語的に抽出します

ビカシュB

私は、文字列を持ってみましょう:

string tstring = "Some arbitrarily long string which has \"double quotes\" which has to be printed verbatim";

私は、使用stringstreamsを試してみましたが、抽出の言葉に引用されました

stringstream stream(tstring);
string tepm;
while(stream >> std::quoted(temp))
    cout << temp << endl;

しかし、上記のスキップ引用符で囲まれた文字列内の引用符

Some
arbitrarily
.
.
double quotes
.
.
verbatim

引用符を含めて、引用符で囲まれた文字列を逐語的に印刷したい

Some
arbitrarily
.
.
"double quotes"
.
.
verbatim

引用符で囲まれた関数を使用してこれを行うにはどうすればよいですか、またはそれが不可能な場合は、これを行うためのより良い方法があります(もちろん、文字ごとに読んですべての作業を自分で行うことは別として)

編集:

これがリクエストに応じたMCVEです

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

using namespace std;

int main(){
    string sspace = "Hi this is \"Real Madrid\"";
    stringstream stream(sspace);
    string fpart;
    while(stream >> quoted(fpart)){
        cout << fpart << endl;
    }
    return 0;
}
AndyG

私は考えていないstd::quoted(それはあなたの区切り文字、破棄され、次の文字列は、あなたがそれを印刷する前に取り除かれた引用符を持っていた場合に指示する簡単な方法はありませんので、ここでの仕事のための適切なツールである'\"'デフォルトでは)

私たちは安全にstd::stringfind方法に頼ることができると思います

  • 引用符で囲まれていないすべての単語(スペース区切り)を出力するサブルーチンを含めます
  • 継続を利用して次の引用符文字まで読んでfind

完全なコード:

void PrintUnquoted(std::string _in)
{
    std::istringstream ss(_in);
    std::string temp;
    while(ss >> temp)
    {
        std::cout << temp << '\n';
    }
}

int main(){
    std::string sspace = "Hi this is \"Real Madrid\" etc.";
    size_t start = 0;
    size_t nextQuote = 0;
    while(nextQuote = sspace.find('\"', start), nextQuote != std::string::npos)
    {
        size_t endQuote = sspace.find('\"', nextQuote+1);
        if (endQuote == std::string::npos)
        {
            throw std::logic_error("Unmatched quotes");
        }

        PrintUnquoted(sspace.substr(start, nextQuote-start));
        std::cout << sspace.substr(nextQuote, endQuote-nextQuote+1) << std::endl;
        start = endQuote+1;
    }
    if (start < sspace.size())
    {
        PrintUnquoted(sspace.substr(start));
    }
    return 0;
}

ライブデモ

引用符で囲まれた文字を変数内に格納する必要がある場合は、次の行

 std::cout << sspace.substr(nextQuote, endQuote-nextQuote+1) << std::endl;

それを得るために簡単に変更できるはずです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

c# で引用符付きの文字列に \ を追加する

分類Dev

@を含むC#の逐語的文字列に相当するJava

分類Dev

C#文字列引用符をJavascript文字列引用符に変換する方法

分類Dev

C#文字列で引用符をエスケープします

分類Dev

C ++ランタイムを使用してCSSからANTLR4引用符付き文字列を抽出する方法

分類Dev

文字列を宣言するときにc#に引用符を書き込むにはどうすればよいですか?

分類Dev

C#を使用して文字列から一重引用符で囲まれた単語を取得する方法

分類Dev

C#正規表現を使用した二重引用符と単一引用符を含む文字列の解析

分類Dev

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

分類Dev

C#6.0の文字列補間で引用符をどのように入力しますか

分類Dev

c#を使用してmysqlに引用符を挿入します

分類Dev

C#の文字のみを含む文字列を抽出します

分類Dev

正規表現を使用して、ネストされた引用符を含む可能性のある引用符付き文字列を抽出します

分類Dev

C#文字列をjavascriptに渡すときに一重引用符と二重引用符をエレガントにエスケープする方法

分類Dev

c:setまたはArrayListに二重引用符を追加します

分類Dev

c#関数の文字列をメタタグ(引用符で囲む)に追加するにはどうすればよいですか?

分類Dev

c#で引用符を書き込むにはどうすればよいですか?

分類Dev

単語を引用符で囲みます(C#)

分類Dev

C ++で引用符で囲まれた文字列を読み取る

分類Dev

C ++文字列を引用符で囲んでベクトルに格納しない限り、文字列を空白で分割します

分類Dev

文字列c#で見つかった最初の引用符のセットの内容を置き換えます

分類Dev

引用符で囲まれていない文字列をCで分割する

分類Dev

C#文字列を引用符で分割する

分類Dev

挿入文字列C#、SQLServerで引用符を無視する

分類Dev

Obj-c正規表現を使用して二重引用符で文字列を区切ります

分類Dev

C#でペルシア語と英語の文字を一緒に含む文字列に置き換えます

分類Dev

C#でXML用に外国語/アクセント付き文字を含む文字列を準備するにはどうすればよいですか?

分類Dev

C#Razorの文字列補間で二重引用符をエスケープしますか?

分類Dev

Cで引用符なしの文字変数を宣言する

Related 関連記事

  1. 1

    c# で引用符付きの文字列に \ を追加する

  2. 2

    @を含むC#の逐語的文字列に相当するJava

  3. 3

    C#文字列引用符をJavascript文字列引用符に変換する方法

  4. 4

    C#文字列で引用符をエスケープします

  5. 5

    C ++ランタイムを使用してCSSからANTLR4引用符付き文字列を抽出する方法

  6. 6

    文字列を宣言するときにc#に引用符を書き込むにはどうすればよいですか?

  7. 7

    C#を使用して文字列から一重引用符で囲まれた単語を取得する方法

  8. 8

    C#正規表現を使用した二重引用符と単一引用符を含む文字列の解析

  9. 9

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

  10. 10

    C#6.0の文字列補間で引用符をどのように入力しますか

  11. 11

    c#を使用してmysqlに引用符を挿入します

  12. 12

    C#の文字のみを含む文字列を抽出します

  13. 13

    正規表現を使用して、ネストされた引用符を含む可能性のある引用符付き文字列を抽出します

  14. 14

    C#文字列をjavascriptに渡すときに一重引用符と二重引用符をエレガントにエスケープする方法

  15. 15

    c:setまたはArrayListに二重引用符を追加します

  16. 16

    c#関数の文字列をメタタグ(引用符で囲む)に追加するにはどうすればよいですか?

  17. 17

    c#で引用符を書き込むにはどうすればよいですか?

  18. 18

    単語を引用符で囲みます(C#)

  19. 19

    C ++で引用符で囲まれた文字列を読み取る

  20. 20

    C ++文字列を引用符で囲んでベクトルに格納しない限り、文字列を空白で分割します

  21. 21

    文字列c#で見つかった最初の引用符のセットの内容を置き換えます

  22. 22

    引用符で囲まれていない文字列をCで分割する

  23. 23

    C#文字列を引用符で分割する

  24. 24

    挿入文字列C#、SQLServerで引用符を無視する

  25. 25

    Obj-c正規表現を使用して二重引用符で文字列を区切ります

  26. 26

    C#でペルシア語と英語の文字を一緒に含む文字列に置き換えます

  27. 27

    C#でXML用に外国語/アクセント付き文字を含む文字列を準備するにはどうすればよいですか?

  28. 28

    C#Razorの文字列補間で二重引用符をエスケープしますか?

  29. 29

    Cで引用符なしの文字変数を宣言する

ホットタグ

アーカイブ