Ho creato un nuovo progetto con il seguente segmento di codice:Meta-carattere sconosciuto in stringa letterale C/C++?
char* strange = "(Strange??)";
cout << strange << endl;
conseguente il seguente output:
(Strano]
Così tradurre '??)' -> ']'
Il debugging mostra che il mio char * string letteral è in realtà quel valore e non è una traduzione stream. Questa ovviamente non è una sequenza di meta-personaggi che abbia mai visto. Qualche tipo di sequenza Unicode o ampia char, forse? Tuttavia, io non la penso così ... Ho provato a disabilitare tutte le impostazioni relative al progetto inutilmente.
Chiunque ha una spiegazione?
- ricerca: 'punto interrogativo, punto interrogativo, vicino brace' c C++ stringa letterale
Questa domanda può aiutarti: http://stackoverflow.com/questions/1234582/purpose-of-trigraph-sequences-in-c –
grazie ... Ho aggiunto la ricerca in fondo al mio post nella speranza che le ricerche future corrispondessero al doppio controlo del punto interrogativo. Questa decisione di progettazione (abilitandola come predefinita) è in una parola: "insano". Lasciare i trigrafi al sistema operativo/interfaccia utente che dico. – Marius
I trigrammi sono stati specificatamente aggiunti per i casi in cui il sistema operativo/interfaccia utente era insufficiente. Ricorda che C risale a un tempo in cui l'interfaccia utente era una connessione terminale a 9600 baud e ASCII era tutt'altro che universale. – caf