gpt4 book ai didi

c++ - 如何将 char/* 转换为 wchar_t/* ---但是

转载 作者:行者123 更新时间:2023-11-28 03:35:55 27 4
gpt4 key购买 nike

我正在将(相当)旧的 C 代码转换为 VS2010。当我使用多字节选项编译程序时一切正常,但我必须将其转换为 UNICODE。

我收到很多与字符串对话相关的错误消息(但这并不奇怪)。我的问题与我必须使用 wchar 字符串(因为 UNICODE)这一事实有关,但我还必须保留标准 char 值(程序需要使用标准 ascii 代码将数据写入文件)。

更清楚地说,使用 Windows 需要 UNICODE,但文件必须保存为 ascii 格式。我在很多地方收到错误,这就是为什么我决定把这个问题放在这里。

somoene 可以建议解决此类问题的最佳做法是什么吗?

提前致谢!

编辑:

嗯,我不是 C/C++ 专家,这是我的第一个大型项目。我已经从第一个答案中尝试了你的建议:

    { 
TCHAR* strz1=_T("%u blocks converted.");
if (n>0)
{
sprintf(str,strz1,n)
}
else
TCHAR* strz2=_T("No blocks found!");
sprintf(str,strz2);
TCHAR* strz3=_T("Status");
MessageBoxW(hwnd,str,strz3,MB_OK|MB_ICONINFORMATION);
return(fe);
}

我遇到了著名的错误:

错误 C2664:“sprintf”:无法将参数 2 从“TCHAR *”转换为“const char *”

错误 C2664:“MessageBoxW”:无法将参数 2 从“char [32]”转换为“LPCWSTR”

最佳答案

如果您使用的是 MFC,请检查 CString 的这些转换宏:ATL and MFC String Conversion Macros.

这样您就可以使用 UTF-8 导出文件并将它们从 UTF-8 读回 UTF-16,这是存储 wchar_s 的自然方式。这样您的应用程序就可以使用 UNICODE 并仍然以 ASCII 格式导出(UTF-8 向后兼容 ASCII)。

关于c++ - 如何将 char/* 转换为 wchar_t/* ---但是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870640/

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