Ho bisogno di fare il seguente codice C# in C++ (se possibile). Devo constare una lunga stringa con un sacco di citazioni frivole e altre cose in esso.Stringhe letterali C++?
risposta
Non ci sono letterali di stringa grezza in C++. Dovrai sfuggire alle stringhe letterali.
std::string str = "I can use \"quotes\" inside here";
C++ 0x propone una corda grezza letterale quando è disponibile:
R"C:\mypath"
Tra l'altro, non è necessario denominare qualsiasi cosa con un leader di sottolineatura come tali identificatori sono riservati in C++.
I nomi che iniziano con un trattino basso e quindi seguiti da una lettera maiuscola sono riservati all'implementazione per qualsiasi uso, quindi non è possibile utilizzarli affatto. I nomi che iniziano con un carattere di sottolineatura in generale sono riservati solo come nomi nello spazio dei nomi globale. –
@Brian - le stringhe raw usano parentesi 'R" (C: \ mypath) "' –
Non esiste un meccanismo di questo tipo in C++. Dovrai farlo alla vecchia maniera, usando le fughe.
Potrebbe essere possibile utilizzare un linguaggio di scripting per rendere la parte di escape un po 'più semplice. Per esempio, l'operatore %Q
in Ruby restituirà una stringa correttamente sfuggito virgolette doppie quando viene utilizzato in irb
:
irb(main):003:0> %Q{hello "world" and stuff with tabs}
=> "hello \"world\" and stuff\twith\ttabs"
stai suggerendo seriamente di incorporare un interprete Ruby nel tuo programma C++ solo per sfuggire a una stringa? – jalf
@jalf: Assolutamente no! Stavo suggerendo di incollare la stringa in Ruby una volta, quindi incollare quel risultato nel suo file sorgente. Posso vedere dove la mia risposta potrebbe essere interpretata in quel modo ridicolo, però. –
Non esiste un equivalente di "@" C# 's in C++. L'unico modo per realizzarlo è quello di fuggire la stringa correttamente:
const char *_literal = "I can use \"quotes\" inside here";
che non è disponibile in 03 (l'attuale standard) C++.
Questo è parte dello standard di bozza C++ 0x ma non è ancora disponibile al momento.
Per ora, non resta che citare in modo esplicito:
const std::string _literal = "I have to escape my quotes in \"C++03\"";
Una volta che C++ 0x diventa realtà, sarete in grado di scrivere:
const std::string _literal = R"(but "C++0x" has raw string literals)";
e quando hai bisogno )"
letterale:
const std::string _literal = R"DELIM(more "(raw string)" fun)DELIM";
+1 per educarmi. – paxdiablo
@paxdiablo - prego. Su una nota a margine, il mio precedente esempio era errato. Le stringhe raw usano parentesi, non parentesi quadre come delimitatori. Anche le stringhe non elaborate hanno una maggiore flessibilità rispetto al mio esempio (è possibile aggiungere un delimitatore in modo da poter mettere ')" 'nella stringa effettiva. –
+1 per la parte DELIM, davvero utile. – qed
- 1. C++ confronta due stringhe letterali
- 2. ottimizzazione C di stringhe letterali
- 3. Escaping stringhe letterali
- 4. Grep per stringhe letterali
- 5. Concatenare stringhe letterali
- 6. C/C++: ambiguità di formato "\ xnnn" nelle stringhe letterali
- 7. internato automaticamente delle stringhe letterali
- 8. Detrazione argomento template per stringhe letterali
- 9. Equivalente Java delle stringhe letterali di C# con @
- 10. Riferimento a stringhe letterali in Go
- 11. Quando utilizzare intern() su stringhe letterali
- 12. Ricerca di stringhe letterali nel mio codice
- 13. Perché le stringhe non-letterali non possono contenere righe nuove?
- 14. Converti UTF-8 in stringhe letterali in Python
- 15. Stringhe letterali senza dover sfuggire a caratteri speciali?
- 16. Utilizza letterali XML in C#?
- 17. C++ 11 letterali definiti dall'utente
- 18. Come si usano le stringhe letterali con l'interpolazione?
- 19. Regole per caratteri letterali stringa C++ escape
- 20. stringa corretta Escaping per stringhe letterali T-SQL
- 21. String letterali definiti dall'utente vs. Altri letterali definiti dall'utente
- 22. stringhe letterali e area di memoria di generazione permanente
- 23. Qual è la categoria del valore di stringhe letterali?
- 24. Come scrivere stringhe letterali in python senza doverle sfuggire?
- 25. Haskell concatena stringhe letterali in fase di compilazione?
- 26. Come posso creare un NSArray con stringhe letterali?
- 27. Come ottenere stringhe multilinea in C#; un'alternativa ai letterali XML di VB?
- 28. stringhe JNI e stringhe C
- 29. come si ottengono stringhe (non stringhe letterali) in attributi blazehtml/contenuti di elementi?
- 30. Letterali interi a larghezza fissa in C++?
Perché non caricare una stringa così lunga da un file? – GManNickG