Domanda Risolto Wcout smette di stampare dopo aver letto: {0x13 0x20}

Stato
Discussione chiusa ad ulteriori risposte.

DanyDollaro

Utente Electrum
14 Luglio 2018
148
41
58
138
Ultima modifica:
Salve, ultimamente stavo lavorando ad un progetto che faceva uso dell'operatore wcout, arrivato al punto d'aver realizzato che l'operatore smetteva di stampare i caratteri a schermo dopo una certa sequenza, ho scritto questo piccolo sketch:
C++:
#include <iostream>

int main()
{
    std::wstring str = L"aaa.bbb";
    str[3] = 8211; // 8211 sarebbe la sequenza {0x13, 0x20}
 
    std::wcout << str;
    std::wcout << L"ccc";
}
Pare che neanche chiamando la funzione std::wcout.flush(); prima di std::wcout << L"ccc"; aggiusti la situazione.
Sapreste dirmi pe quale motivo wcout smetta di funzionare? e come posso farlo riprendere?

EDIT:
eseguendo il programma sopra illustrato ottengo come output:
Codice:
aaa
 
Il problema che hai incontrato e' meglio descritto da questa pagina di MSDN.
In breve per avere l'output corretto su cmd va fatta questa "strana" chiamata:

C++:
//...
#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << "你好 русский язык";
    // ...
}
 
  • Grazie
Reazioni: DanyDollaro
Stato
Discussione chiusa ad ulteriori risposte.