Я пытался написать приложение на c ++ для проекта и столкнулся с этой проблемой. В основном:
class OBSClass
{
public:
wstring ClassName;
uint8_t Credit;
uint8_t Level;
OBSClass() : ClassName(), Credit(), Level() {}
OBSClass(wstring name, uint8_t credit, uint8_t hyear)
: ClassName(name), Credit(credit), Level(hyear)
{}
};
В другом файле:
vector<OBSClass> AllClasses;
...
AllClasses.push_back(OBSClass(L"Bilişim Sistemleri Mühendisliğine Giriş", 3, 1));
AllClasses.push_back(OBSClass(L"İş Sağlığı ve Güvenliği", 3, 1));
AllClasses.push_back(OBSClass(L"Türk Dili 1", 2, 1));
... (rest omitted, some of entries have non-ASCII characters like 'ş' and 'İ')
У меня есть функция, в основном выводит все в AllClasses
, проблема в том, что wcout не выводит как нужно.
void PrintClasses()
{
for (size_t i = 0; i < AllClasses.size(); i++)
{
wcout << "Class: " << AllClasses[i].ClassName << "\n";
}
}
Вывод «Класс: Били» и ничего больше. Программа даже не пытается вывести другие записи и просто зависает. Я на Windows, используя G ++ 6.3.0. И я не использую Windows 'cmd, я использую bash от mingw, поэтому кодирование не будет проблемой (или нет?). Любой совет?
Редактировать: Кодировка исходного кода также не является проблемой, только что проверил, что это UTF8, по умолчанию VSCode
Редактировать: Также только что проверил, если проблема со строковыми литералами
wstring test;
wcin >> test;
wcout << test;
Введено несколько не-ASCII символов, таких как 'ö' и 'ş', все работает отлично. В чем проблема с широкими строковыми литералами?
Редактировать: Вот, пожалуйста,
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<wstring> testvec;
int main()
{
testvec.push_back(L"Bilişim Sistemleri Mühendisliğine Giriş");
testvec.push_back(L"ıiÖöUuÜü");
testvec.push_back(L"☺☻♥♦♣♠•◘○");
for (size_t i = 0; i < testvec.size(); i++)
wcout << testvec[i] << "\n";
return 0;
}
Компиляция с G ++:
g ++ file.cc -O3
Этот код выводит только 'Bili'. Должно быть что-то с тем, что g ++ испортил двоичную кодировку (?), Поскольку ввод значений с wcin
и вывод их с wcout
не создает никаких проблем.