Qual è l'equivalente in C++ del simbolo C# che precede le stringhe? Per far uscire automaticamente i simboli?Qual è l'equivalente in C++ del simbolo C# che precede le stringhe?
Esempio: var howManySlashesAreThereIn = @"\\\\\\"
;
Qual è l'equivalente in C++ del simbolo C# che precede le stringhe? Per far uscire automaticamente i simboli?Qual è l'equivalente in C++ del simbolo C# che precede le stringhe?
Esempio: var howManySlashesAreThereIn = @"\\\\\\"
;
Stai cercando la funzione "stringa raw" di C++ ma è un'aggiunta abbastanza recente (C++ 11, credo).
std::string howManySlashesAreThereIn = R"(\\\\\\)";
E 'documentato nel 2.14.5 String lieterals
dello standard C++ 11, anche se questo tomo può essere un po' secco per voi, quindi suggerirei googling su "raw string" c++
.
Così come sbarazzarsi di quelli fuga raddoppiare monstrosites come "\\\\nasbox\\sharename\\downloads\\super_sekrit_stuff"
, permette anche di bypassare il "aggiungendo \n
caratteri e la combinazione di corde adiacenti" trucco come l'accensione:
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";
in qualcosa di più leggibile (non esattamente lo stesso a causa di spazi nella seconda variante, ma perfettamente bene per HTML quanto ignora gli spazi aggiunti in questo caso):
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";
Questo è vecchio ma dovrebbe essere "R" (.. .) "' nel tuo ultimo esempio, e probabilmente non dovrebbe avere una barra rovesciata poiché è una stringa non elaborata. – Rapptz
La prima versione come scritta non avrà il rientro mostrato dalla seconda versione. Puoi spostare tutte le virgolette di sinistra nella versione obsoleta a sinistra per accumulare spazi bianchi se vuoi il rientro. Le stringhe Raw sono più facili da ottenere. – emsr
C++ 11 aggiunge valori letterali di stringa raw
almeno in qualche modo simili.
R"(This is a raw literal)";
Questi sono particolarmente utili per le regex, come:
R"@(\w+\d*)@"
... il che, come un letterale tradizionale potrebbe essere:
"\\w+\\d*"
Anche se la differenza non è enorme , può fare la differenza, specialmente in una regex più lunga.
Il delimitatore '@' deve essere compreso tra virgolette. – user362515
@ user362515: Oops: incredibile come un errore di battitura possa sopravvivere per quasi 4 anni quando non viene eseguito attraverso un compilatore ... –
Here è un esempio di stringhe di stringa non formattate (C++ 11).
Newlines e backslash appaiono letteralmente.
Intende le stringhe letterali. – Mehrdad
possibile duplicato di [String letterals C++?] (Http://stackoverflow.com/questions/2597322/string-literals-c) – Mehrdad
@Jake - Gotcha! Grazie per il chiarimento. Il termine .Net è "letterale stringa letterale" e lo scopo è che "\" non sia considerato un carattere di escape: http://msdn.microsoft.com/en-us/library/aa691090%28v=vs 0,71% 29.aspx. Non esiste un equivalente in Java o versioni correnti di C++ (e no, io * non * considero C++ 11 una "versione corrente";)) – paulsm4