Нашёл в сети-интернет std::cout << "\u0394V" << '\n'; но у меня выводит символ вопроса
Asked
Active
Viewed 1,136 times
1
-
Уточните, в какой среде вы это делаете. – Vladimir Gamalyan Sep 19 '17 at 12:10
-
В windows 10. Компилятор visual studio – Sep 19 '17 at 12:14
-
потому что печатаете в терминале, который по умолчанию настроен на кодировку 866. Переключите на юникод (например, перейдя на линукс:) ) и будет счастье. – KoVadim Sep 19 '17 at 12:32
-
линукс мне не подходит, наверное есть другое решение. – Sep 19 '17 at 12:37
-
Здесь целый ряд факторов, начиная с кодировки файла исходного кода, кодовой страницы консоли, шрифта консоли и, самое сложное - stream-ы в visual studio не гарантируют передачу в консоль вашего символа за один вызов api. – Vladimir Gamalyan Sep 19 '17 at 14:02
-
@VladimirGamalyan а зачем гарантировать за один вызов? – αλεχολυτ Sep 19 '17 at 14:41
-
@alexolut Например если код символа двухбайтовый, для utf-8 может быть напечатано два символа. – Vladimir Gamalyan Sep 19 '17 at 17:44
-
VladimirGamalyan так если консоль правильно настроена, она не должна печатать полусимволы – αλεχολυτ Sep 19 '17 at 18:04
2 Answers
1
Перейдите на широкие строки, как описано в этом ответе в разделе «Правильное, но сложное решение».
После этого ваша программа будет иметь вид
#include <iostream>
#include <io.h>
#include <fcntl.h>
int wmain(int argc, wchar_t* argv[])
{
_setmode(_fileno(stdout), _O_U16TEXT);
_setmode(_fileno(stdin), _O_U16TEXT);
_setmode(_fileno(stderr), _O_U16TEXT);
std::wcout << L"Δδ" << std::endl;
return 0;
}
Нет, просто скопировать текст примера недостаточно, нужно ещё сделать то, что описано в ответе по ссылке выше.
VladD
- 206,799
0
Попробуйте
#include "iostream"
#include <windows.h>
int main()
{
SetConsoleOutputCP(65001); // Переключение консоли на кодировку 65001 (утф-8)
std::cout << u8"\u0394" << std::endl; // Печать символа 0394 (дельта)
return 0;
}
К сожалению непортабельно, но для студии и Win как раз.
u8 - строковый литерал, сообщающий, что строку следует интерпретировать как утф-8 (https://msdn.microsoft.com/en-us/library/69ze775t.aspx)
goldstar_labs
- 2,427