2017-09-05 8 views
0

J'essaie d'en apprendre davantage sur les littéraux de chaînes de caractères et les goûts et j'ai joué avec. Actuellement confronté au problème de ne pas pouvoir extraire une chaîne qui était la concaténation de deux chaînes littérales ajoutées avec la méthode "chaîne".C++ string_literals s postfix ne peut pas imprimer la chaîne concaténée de cette façon

std::string concat = "Hello, "s + "World!";

Il n'a pas d'erreurs du compilateur si je jetai à une chaîne ou faire un appel à un constructeur de chaîne pour les concaténer.

J'ai également des problèmes pour que wcout génère réellement des caractères Unicode. J'utilise cout ailleurs dans le code.

constexpr wchar_t* surname = L"shirts \u0444 \u1300";

sorties chemises mais pas de caractères unicode quand je wcout << surname; Si je viens le nom Cout je reçois hex.


Edit: Merci aux commentaires que je l'ai compris le problème de wcout. Je ne me rendais pas compte que ça marcherait seulement avec wstring et j'évitais les coutumes ordinaires parce que j'avais lu quelque chose sur le fait de ne pas mélanger les deux que je n'ai pas encore compris.

Je n'arrive toujours pas à imprimer les symboles dans wchar_t * qui ne fait que sortir les caractères ascii ordinaires.

Merci pour les réponses rapides jusqu'à présent!


wcout fonctionne pour les caractères normaux marqués avec u8 mais rien d'autre il semble. Plusieurs instructions wcout ne produisent rien après que la chemise a échoué, je les ai déplacées avant et elles ont été imprimées mais elles étaient hexagonales plutôt que des caractères comme prévu. Jusqu'à présent, seuls les caractères char * normaux ont fonctionné. Ceci est un mal de tête ...

+7

'wcout' est pour les chaînes de caractères larges,' std :: wstring 's, seulement. –

+0

* "Je n'arrive pas à extraire les caractères Unicode de wcout." *: Votre shell prend-il en charge Unicode? – Jarod42

+0

Je suis sur Windows 10 en utilisant Visual Studio 15 2017 – eternalNoob

Répondre

0

Quant à aucune sortie de la console Unicode, vous pouvez avoir à définir les paramètres régionaux, qui est la suivante:

std::setlocale(LC_ALL, ""); 
constexpr wchar_t* surname = L"shirts \u0444 \u1300"; 
wcout << surname; 
+0

Je définis les paramètres régionaux et cela ne fonctionne toujours pas. Ce n'est pas seulement la sortie de symboles que cela empêche les deux prochaines instructions wcout de fonctionner aussi ... – eternalNoob