文字列にプレフィックスを付けるC#@記号のC++に相当するものは何ですか?シンボルを自動的にエスケープするには?文字列にプレフィックスを付けるC#@シンボルのC++に相当するものは何ですか?
例:var howManySlashesAreThereIn = @"\\\\\\"
;
文字列にプレフィックスを付けるC#@記号のC++に相当するものは何ですか?シンボルを自動的にエスケープするには?文字列にプレフィックスを付けるC#@シンボルのC++に相当するものは何ですか?
例:var howManySlashesAreThereIn = @"\\\\\\"
;
C++の「生の文字列」機能を探していますが、これはかなり最近の追加です(C++ 11、私は信じています)。
std::string howManySlashesAreThereIn = R"(\\\\\\)";
その書物はあなたのために少し乾いたかもしれないがそれは、C++ 11標準の2.14.5 String lieterals
に記載されますので、私は"raw string" c++
上にGoogleをお勧めしたいです。
同様"\\\\nasbox\\sharename\\downloads\\super_sekrit_stuff"
ようmonstrositesを倍増それらの脱出を取り除くように、それはまた、あなたが「\n
文字を追加すると、隣接する文字列を組み合わせた」など回すようなトリックをバイパスすることができます:
htmlString =
"<HTML>\n"
"<HEAD>\n"
"<TITLE>My page</TITLE>\n"
"<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n"
"</HEAD>\n"
"<BODY LINK=\"#0000ff\" VLINK=\"#800080\" BGCOLOR=\"#ffffff\">\n"
"<P> </P>\n"
"<PRE>\n";
をより読みやすいものに(ない正確同じによる第二の変形にスペースに、しかし完全に大丈夫HTMLのために、それはこの場合には追加のスペースは無視されますので):
htmlString = R"xyzzy(
<HTML>
<HEAD>
<TITLE>My page</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080" BGCOLOR="#ffffff">
<P> </P>
<PRE>
)xyzzy";
C++ 11は、少なくともいくらか類似したraw
の文字列リテラルを追加します。 、伝統的なリテラルのようになります
R"@(\w+\d*)@"
...:
"\\w+\\d*"
違いは巨大ではありませんが、これらのような正規表現、のために特に有用である
R"(This is a raw literal)";
それは、特に長い正規表現では、違いを生むことができます。
デリミタ '@'は引用符の中になければなりません。 – user362515
@ user362515:Oops - タイプミスがコンパイラを実行しないうちに、ほぼ4年間生き残ることができます。 –
Hereは、生の文字列リテラル(C++ 11)の例です。
改行とバックスラッシュはそのまま表示されます。
彼は逐語的な文字列を意味します。 – Mehrdad
[String literals C++?]の複製が可能です(http://stackoverflow.com/questions/2597322/string-literals-c) – Mehrdad
@Jake - Gotcha!明確化のためのThanx。 .Net用語は "逐語的文字列リテラル"であり、目的は "\"がエスケープ文字として扱われないようにすることです:http://msdn.microsoft.com/en-us/library/aa691090%28v=vs .71%29.aspx。 Javaや現行バージョンのC++には同等のものはありません(C++ 11は「現行バージョン」とは考えません)。 – paulsm4