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

时间:2012-06-03 13:12:26

标签: c++

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

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

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

May 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'

1 个答案:

答案 0 :(得分:2)

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

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

相关问题