Dzień dobry.
Próbuję ustawić prawidłowe kodowanie znaków, zarówno, dla stringów stałych, wpisanych w kodzie programu, jak i dla tekstów wpisywanych z konsoli. Ale kicha, albo rybka, albo p... Jak działa jedno to drugie nie działa, i na odwrót.
#include <iostream>
#include <locale>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
using namespace std;
setlocale(LC_ALL, "");
// cin.imbue(locale(""));
vector<string> v = {"ąę", "bb"};
sort(v.begin(), v.end(), locale(""));
copy(v.begin(), v.end(), ostream_iterator<string>(cout, "\n"));
string str;
getline(cin, str);
cout << str;
return 0;
}
Zmieniłem stronę kodową pliku na ascii (w Notepadzie++) i po odsłonieniu setlocale
, a zasłonieniu cin.imbue
treść vector
'a wyświetla i sortuje się prawidłowo. Jednak tekst wpisany z klawiatury nie wyświetla polskich znaków. Jak odwrócę komentarz i przysłonię setlocale
a odsłonię cin.imbue
to z kolei vector
nie ma polskich znaków, a tekst z klawiatury ma. Czy da się to jakoś pogodzić?
Dzieki
Michał