2

C++ コードからプログラム コードを出力する必要があるとします。したがって、次のようなものを印刷する必要があります。

cout << "foo(\"hello\", \"world\", 5)" << endl;

それぞれをエスケープする必要がないようにする方法はありますか?

4

3 に答える 3

14

C ++ 11を使用すると、次のことができます

R"delimeter(foo("hello", "world",5))delimeter"

ここR"delimeter(で、は生の文字列の開始を定義し、 delimeterは最大16文字のラベルであり)delimeter"、生の文字列を終了します。

于 2012-10-21T06:06:38.263 に答える
5

C++03 を使用している場合は、マクロを使用して必要なことを行うことができます。

#define PRINT_STRING(s) cout << (#s) << endl;

int main() {
    cout << "foo(\"hello\", \"world\", 5)" << endl;
    PRINT_STRING(foo("hello", "world", 5))
    return 0;
}

戻り値

output:
foo("hello", "world", 5)
foo("hello", "world", 5)

ここで見ることができます: http://ideone.com/G6TvU3

于 2012-10-21T08:31:05.020 に答える
3

コンパイラがC++11をサポートしている場合、複数行の引用符の構成は次R"LABEL(のとおりです。LABELは有効なラベルです。見積もりを終了するには、)LABEL"

于 2012-10-21T06:05:09.077 に答える