草庐IT

c++ - 为什么 std::codecvt<wchar_t, char, mbstate_t> 不能按定义工作?

#includeusingnamespacestd;voidf1(){wcout.imbue(locale("chs"));wcout());wcout.imbue(loc);wcout根据cplusplus.com的在线文档:codecvt:convertsbetweennativewideandnarrowcharactersets.本程序用VC++编译,Windows运行。在本程序中,内部字符集为UCS-2,由VC++编译器定义;外部字符集,即窄字符集,在控制台环境下是GBK(中文字符集)。如果文档为真,则wcout可以像f1()一样将unicode字符串从UCS-2转换为GBK

map - C++ wcout std::map 值

我有一个名为“提示”的std::map,声明如下:std::map,std::allocator>>prompts;它存储int'key'和wstring'value'对。如果我这样做:wcoutget_state()];编译器(vc10)提示errorC2679:binary''(orthereisnoacceptableconversion)我必须做什么才能使map返回的wstring值用wcout打印?某种类型转换?或者……? 最佳答案 在第一行中,您缺少一个std::std::mapstd::wstring,std::les

C++:有没有什么好的读/写方法而不用在函数名中特别说明字符类型? (cout 与 wcout 等)

我在让程序根据模板从文件中读取时遇到问题,例如:boolparse(basic_ifstream&file){Tch;localeloc=file.getloc();basic_stringbuf;file.unsetf(ios_base::skipws);if(file.is_open()){while(file>>ch){if(isalnum(ch,loc)){buf+=ch;}elseif(!buf.empty()){addWord(buf);buf.clear();}}if(!buf.empty()){addWord(buf);}returntrue;}returnfalse;

c++ - wcout 是如何工作的?

我在控制台应用程序中使用wcout时注意到一个奇怪的问题。调用某个函数后,其余的wcout调用根本不起作用。即输出语句没有出现在控制台上。我注意到在函数中,我使用了一个从未分配过的宽字符数组。WCHARwArray[1024];wcout在这个调用之后,所有其他wcout都停止工作了。所以,我只是想知道是什么让wcout与cout不同,以及为什么会出现这个问题, 最佳答案 wcout可能正在对输出进行一些unicode验证;如果验证失败,则输出失败。这部分是因为Windows控制台子系统不能很好地处理Unicode。检查流中是否有f

c++ - xcode std::wcout 与 wchar_t 或 std::wstring!

我正在尝试将xcode中的wstring/wchar_t打印到控制台,但不幸的是它只适用于基本字符(我认为是ascii)字符,其他所有字符都以数字显示,例如以下内容:std::cout当cout版本按预期打印“äöüu”时,我在使用wchar_t时得到以下信息:\344\366\374u关于如何解决这个问题有什么想法吗?我正在使用xcode3.2.264位和gcc4.2,文件编码设置为Unicode(UTF-8)谢谢! 最佳答案 我有一个类似的问题,但与wostream/wofstream相关。用谷歌搜索,这是答案:tc_ofstr

c++ - std::endl 是否适用于 cout 和 wcout?

我想知道std::endl是否适用于std::cout和std::wcout?有人清楚吗? 最佳答案 是的。事实上,std::endl是一个函数模板,它将作为std::basic_ostream的任何特化的操纵器模板。更多细节:27.7.3.6规定std::basic_ostream模板包含operator的重载如下:basic_ostream&operator&(*pf)(basic_ostream&));在合适的函数上调用此重载的效果是returnpf(*this).所以当你说std::cout,这实际上变成了std::endl

c++ 无法获取 "wcout"来打印 unicode,并让 "cout"继续工作

无法让“wcout”在多个代码页中打印unicode字符串,同时让“cout”继续工作请帮我让这3行一起工作。std::wcout输出:abchelloworldfromcout!我试过:#include#include_setmode(_fileno(stdout),_O_U8TEXT);问题:“wcout”失败尝试过:std::localemylocale("");std::wcout.imbue(mylocale);和:SetConsoleOutputCP(1251);和setlocale(LC_ALL,"");和SetConsoleCP(CP_UTF8)没有效果

c++ - 如何使用 std::imbue 设置 std::wcout 的语言环境?

我正在尝试使用C++11中的std::locale机制来计算不同语言的单词。具体来说,我有std::wstringstream,其中包含着名的俄罗斯小说的标题(英文为“犯罪与惩罚”)。我想要做的是使用适当的语言环境(ru_RU.utf8在我的Linux机器上)来读取字符串流,计算单词并打印结果。我还应该注意到我的系统设置为使用en_US.utf8语言环境。想要的结果是这样的:0:"Преступление"1:"и"2:"наказание"Icounted3words.andthelastwordwas"наказание"当我设置全局语言环境时,这一切都有效,但当我尝试imbuew

c++ - 如何使用 std::imbue 设置 std::wcout 的语言环境?

我正在尝试使用C++11中的std::locale机制来计算不同语言的单词。具体来说,我有std::wstringstream,其中包含着名的俄罗斯小说的标题(英文为“犯罪与惩罚”)。我想要做的是使用适当的语言环境(ru_RU.utf8在我的Linux机器上)来读取字符串流,计算单词并打印结果。我还应该注意到我的系统设置为使用en_US.utf8语言环境。想要的结果是这样的:0:"Преступление"1:"и"2:"наказание"Icounted3words.andthelastwordwas"наказание"当我设置全局语言环境时,这一切都有效,但当我尝试imbuew

c++ - 在同一个程序中混合 cout 和 wcout

我正在阅读“C++Cookbook”,其中包含以下片段://cout如果您有兴趣查看实际示例,这里是alinktothepageonGooglebooks.另外,我发现了这个SOquestion这似乎表明混合wcout和cout是可以的。有人可以向我解释一下这条评论在说什么吗?编辑来自C++标准[27.4.1]:Mixingoperationsoncorrespondingwide-andnarrow-characterstreamsfollowsthesamesemanticsasmixingsuchoperationsonFILEs,asspecifiedinAmendment1o
12