C++ コードからプログラム コードを出力する必要があるとします。したがって、次のようなものを印刷する必要があります。
cout << "foo(\"hello\", \"world\", 5)" << endl;
それぞれをエスケープする必要がないようにする方法はありますか?
C++ コードからプログラム コードを出力する必要があるとします。したがって、次のようなものを印刷する必要があります。
cout << "foo(\"hello\", \"world\", 5)" << endl;
それぞれをエスケープする必要がないようにする方法はありますか?
C ++ 11を使用すると、次のことができます
R"delimeter(foo("hello", "world",5))delimeter"
ここR"delimeter(
で、は生の文字列の開始を定義し、 delimeter
は最大16文字のラベルであり)delimeter"
、生の文字列を終了します。
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
コンパイラがC++11をサポートしている場合、複数行の引用符の構成は次R"LABEL(
のとおりです。LABELは有効なラベルです。見積もりを終了するには、)LABEL"