Article View: pl.comp.lang.c
Article #309866std::wstring i Konsole z Kde
From: Szyk Cech
Date: Sun, 02 Jun 2019 05:23
Date: Sun, 02 Jun 2019 05:23
70 lines
2987 bytes
2987 bytes
Witam
Chcę zrobić funkcje konwersji między std::string a std::wstring. W
zasadzie już je chyba mam. Problem jest taki, że nie wiem jak
stwierdzić, że std::wstring jest poprawny. Bo na konsolę wypisuje
śmieci. Program jest taki:
#include <string>
#include <iostream>
#include <codecvt>
#include <locale>
std::wstring gToWide(const std::string& aNarrow)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> lConverter;
return lConverter.from_bytes(aNarrow);
}
std::string gToNarrow(const std::wstring aWide)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> lConverter;
return lConverter.to_bytes(aWide);
}
int main(/*int argc, char *argv[]*/)
{
std::string lStr1("zażółć gęślą jaźń");
std::wstring lStr2(gToWide(lStr1));
// std::cout << "sizeof(wchar_t): " << sizeof(wchar_t) << std::endl;
// std::cout << lStr1 << std::endl;
std::wcout << lStr2 << std::endl;
// std::cout << gToNarrow(lStr2) << std::endl;
return EXIT_SUCCESS;
}
Wyjście jest takie:
$ ./StringConversions
za???? g??l? ja??
A gdy main jest taka:
int main(/*int argc, char *argv[]*/)
{
std::string lStr1("zażółć gęślą jaźń");
std::wstring lStr2(gToWide(lStr1));
std::cout << "sizeof(wchar_t): " << sizeof(wchar_t) << std::endl;
std::cout << lStr1 << std::endl;
std::wcout << lStr2 << std::endl;
std::cout << gToNarrow(lStr2) << std::endl;
return EXIT_SUCCESS;
}
To wyjście jest takie:
$ ./StringConversions
sizeof(wchar_t): 4
zażółć gęślą jaźń
za|�B g[l jazD
zażółć gęślą jaźń
Wiem, że ta druga postać main jest raczej nie prawidłowa, bo kiedyś
zgłaszałem ten problem do GNU i podali mi tam, że nie należy mieszać
std::cout i std::wcout.
Ma ktoś pomysł co zrobić, by std::wcout wypisywał coś normalnego?!?
dzięki i pozdro
Szyk Cech
Technical Details
Message-ID:
<N3JIE.260549$972.210681@fx14.fr7>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fx14.fr7.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fx14.fr7.POSTED!not-for-mail Newsgroups: pl.comp.lang.c X-Mozilla-News-Host: snews://newshosting.com:563 From: Szyk Cech <szykcech@spoko.pl> Subject: std::wstring i Konsole z Kde User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 Lines: 70 Message-ID: <N3JIE.260549$972.210681@fx14.fr7> X-Complaints-To: abuse(at)newshosting.com NNTP-Posting-Date: Sun, 02 Jun 2019 05:23:57 UTC Organization: Newshosting.com - Highest quality at a great price! www.newshosting.com Date: Sun, 2 Jun 2019 07:23:56 +0200 X-Received-Bytes: 2766 X-Received-Body-CRC: 3723335001 X-Original-Bytes: 2590 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit