相关疑难解决方法(0)

C++将字符串(或char*)转换为wstring(或wchar_t*)

string s = "????";
wstring ws = FUNCTION(s, ws);
Run Code Online (Sandbox Code Playgroud)

我如何将s的内容分配给ws?

搜索谷歌并使用了一些技术,但他们无法分配确切的内容.内容失真.

c++ string wstring

157
推荐指数
11
解决办法
24万
查看次数

Windows控制台上的UTF-8输出

以下代码显示了我的计算机上的意外行为(在Windows XP和Windows 7上的VS 2012上使用Visual C++ 2008 SP1进行了测试):

#include <iostream>
#include "Windows.h"

int main() {
    SetConsoleOutputCP( CP_UTF8 );
    std::cout << "\xc3\xbc";
    int fail = std::cout.fail() ? '1': '0';
    fputc( fail, stdout );
    fputs( "\xc3\xbc", stdout );
}
Run Code Online (Sandbox Code Playgroud)

我简单编译了cl /EHsc test.cpp.

Windows XP:控制台窗口中的输出 ü0ü(转换为代码页1252,最初显示默认代码页中的一些线条图,可能是437).当我更改控制台窗口的设置以使用"Lucida Console"字符集并再次运行我的test.exe时,输出更改为,这意味着

  • ü可以使用fputsUTF-8编码来编写字符C3 BC
  • std::cout 因任何原因都不起作用
  • failbit尝试写字符后,流设置

Windows 7:使用Consolas输出??0ü.更有趣.可能写入正确的字节(至少在将输出重定向到文件时)并且流状态正常,但这两个字节被写为单独的字符).

我试图在"Microsoft Connect"(见这里)上提出这个问题,但是MS并没有太大的帮助.你可以在这里看一下 以前曾经问过类似的东西.

你能重现这个问题吗?

我究竟做错了什么?不应该std::coutfputs有相同的效果?

解决:(排序)继mike.dld的想法,我实现了一个std::stringbuf …

c++ console windows-xp utf-8 visual-studio-2008

7
推荐指数
2
解决办法
4965
查看次数

使用 std::codecvt_xxx 将 C++ std::wstring 转换为 utf8

C ++ 11具有工具宽字符字符串转换std::wstring从/到UTF8表示:std::codecvtstd::codecvt_utf8std::codecvt_utf8_utf16等。

Windows 应用程序可使用哪一个将常规宽字符 Windows 字符串转换std::wstring为 utf8 std::string?它总是在不配置语言环境的情况下工作吗?

c++ windows string utf-8 widechar

4
推荐指数
2
解决办法
6430
查看次数