我有这样的问题。我是波兰人。我在控制台中使用抛光字母。我已经找到了如何通过wcout StackOverflowAnswer编写Unicode文字。但是我仍然不知道,如何通过wcin读取Unicode文字,并将它们写回到控制台(当我读到'ĄĘŁŚŹĆŃ'时,我的输出很奇怪。)
如何通过wc读取wstring的波兰字母,以便能够通过wcout正确地写回来?
当我添加:
_setmode(_fileno(stdin), 0x00020000);
它不读数字;
请帮助,谢谢。麦克
编辑: 这是我的代码(函数):
void dodaj()
{
wcout << L"Dodawanie nowego pracownika:\n";
wstring imie, nazwisko;
short dzien, miesiac, rok;
wstring adnotacjaDoDatyUrodzenia, stanowisko, adnotacjaDoPracownika;
wcout << L"Podaj imię i nazwisko:\nImie: ";
getline(wcin, imie);
wcout << L"Nazwisko: ";
getline(wcin, nazwisko);
wcout << L"Podaj datę urodzenia:\n";
dzien = pobierzShort(L"Dzień: ");
miesiac = pobierzShort(L"Miesiąc: ");
rok = pobierzShort(L"Rok: ");
wcout << L"Podaj adnotację do daty urodzenia: ";
getline(wcin, adnotacjaDoDatyUrodzenia);
wcout << L"Podaj stanowisko: ";
getline(wcin, stanowisko);
wcout << L"Podaj adnotację do pracownika: ";
getline(wcin, adnotacjaDoPracownika);
pracownicy.push_back(Pracownik(imie, nazwisko, dzien, miesiac, rok, adnotacjaDoDatyUrodzenia, stanowisko, adnotacjaDoPracownika));
}
写入控制台功能:
void wyswietlInfoOPracownikach()
{
for (int i = 0; i < pracownicy.size(); i++)
{
wcout << L"Pracownik nr " << i << endl;
pracownicy[i].wyswietlPodsumowanie();
wcout << endl;
}
}
void Pracownik::wyswietlPodsumowanie()
{
wcout << L"Pracownik:\n";
daneOsobowe.wyswietlDaneOsobiste();
wcout << L"Data urodzenia:\n";
dataUrodzenia.wyswietlDate();
wcout << L"Adres zamieszkania:\n";
adresZamieszkania.wyswietlAdres();
wcout << L"Adres zameldowania:\n";
adresZameldowania.wyswietlAdres();
wcout << L"Adres korespondencji:\n";
adresKorespondencji.wyswietlAdres();
umowy.wyswietlHistorieDat();
orzeczenia.wyswietlHistorieDat();
badania.wyswietlHistorieDat();
urlopy.wyswietlHistorieDat();
wcout << L"Stanowisko: " << stanowisko << endl;
wcout << L"Wynagrodzenie brutto: " << wynagrodzenieBrutto << endl;
wcout << L"Dodatkowe informacje: " << adnotacja << endl;
}
我的主要():
int main()
{
_setmode(_fileno(stdout), 0x00020000);
// _setmode(_fileno(stdin), 0x00020000);
system("cls");
menu();
short wybor;
wybor = pobierzShort(L"Wybierz opcję menu: ");
while (wybor != 3)
{
bool czyWyjsc = false;
switch (wybor)
{
case 1: wyswietlInfoOPracownikach(); break;
case 2: dodaj(); break;
case 3: czyWyjsc = true; break;
default: wcout << L"Dokonano złego wyboru\n"; break;
}
if (czyWyjsc)
break;
menu();
wybor = pobierzShort(L"Wybierz opcję menu: ");
system("cls");
}
return 0;
}
问题已经解决了一半。我打电话给
_setmode(_fileno(stdin), 0x00020000);
何时需要读取wstring和
_setmode(_fileno(stdin), _O_TEXT);
当我需要读数字时。