gpt4 book ai didi

c - TCHAR 字符显示不正确

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:15 27 4
gpt4 key购买 nike

我有一个简单的代码,argv[1]"Привет"

#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <locale.h>

int _tmain(int argc, TCHAR* argv[])
{
TCHAR buf[100];

_fgetts(buf, 100, stdin);

_tprintf(TEXT("\nargv[1] %s\n"), argv[1]);
_tprintf(TEXT("%s\n"), buf);
}

在控制台中,我编写 "Мир" 并得到以下结果:

image

如果我使用 setlocale(LC_ALL, ""),我会得到这样的结果:

image

在这两种情况下,我应该怎么做才能获得正确的字符串?

最佳答案

显然您的程序可以正常工作,只是它无法在控制台窗口上正确打印。这是因为 Windows 控制台与 Unicode 不完全兼容。对 Visual Studio 使用 _setmode。这应该适用于俄语,但某些亚洲语言可能会有其他问题。对其他编译器使用 WriteConsole

Visual Studio 示例:

#include <stdio.h>
#include <io.h> //for _setmode
#include <fcntl.h> //for _O_U16TEXT

int wmain(int argc, wchar_t* argv[])
{
_setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"%s", L"Привет\n");

return 0;
}

关于c - TCHAR 字符显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43938388/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com