Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:有unicode控制台标题。。?_C++_Unicode_Console_Title - Fatal编程技术网

C++ C++;:有unicode控制台标题。。?

C++ C++;:有unicode控制台标题。。?,c++,unicode,console,title,C++,Unicode,Console,Title,当我尝试使用SetConsoleTitle()将控制台的标题设置为包含unicode字符的字符串时,标题只显示一些垃圾字符。 我还尝试了SetConsoleTitleW()函数,但这会导致以下错误: error: cannot convert 'const char*' to 'const WCHAR*' for argument '1' to 'BOOL SetConsoleTitleW(const WCHAR*)' 有什么建议吗?您必须使用宽字符串文字,即: SetConsoleTitle

当我尝试使用
SetConsoleTitle()
将控制台的标题设置为包含unicode字符的字符串时,标题只显示一些垃圾字符。
我还尝试了SetConsoleTitleW()函数,但这会导致以下错误:

error: cannot convert 'const char*' to 'const WCHAR*' for argument '1' to 'BOOL SetConsoleTitleW(const WCHAR*)'

有什么建议吗?

您必须使用宽字符串文字,即:

SetConsoleTitleW(L"DиD");
引号前的
L
表示这是一个
wchar\u t*
字符串

另外,为了完整性,我必须说,在C++11中,定义了新的字符串文字前缀:

const char a[] = u8"for a UTF-8 string.";
const char_16_t b[] = u"for a UTF-16 string.";
const char_32_t c[] = U"for a UTF-32 string.";

与往常一样,我们有更详细的说明。

看起来您正试图将UTF-8编码的数据发送到需要UTF-16编码数据的函数


在传递给函数之前,您需要将字符串文字转换为UTF-16(即
WCHAR*
),或者将文字创建为
WCHAR*
文字(我相信这是使用语法
L“DцD”
完成的)。

非常感谢。回答得很好。(我会在2分钟内接受这个答案,时间限制过后。)