使用itoa和TCHAR

use*_*747 3 c++ winapi encoding

我有一个支持UNICODE的Win32 C++应用程序.我有一个问题,我使用itoa()函数,但我得到一个编译错误,因为我传递一个TCHAR*作为参数,而不是一个char*.

我能做些什么才能让它发挥作用?

TCHAR buf[32];
itoa( taskState, buf, 10 );
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 7

对于TCHAR字符串,您应该使用_ttoi().

  • 当然你的意思是_itot()? (4认同)

Che*_*Alf 5

我们没有充分的理由,TCHAR除非您在DLL中使用MFC定位Windows 9x,并且您有点害怕重建MFC.只是用wchar_t.

然后阅读微软的文档itoa.

在那里,您可以找到至少一个可以与wchar_t字符串一起使用的变体.

使用itoa家庭通常不是一个好主意,但是你还处于尚未学会查阅文档的阶段.

所以,这就是你应该做的:检查文档(是的,我已经检查过,它就在那里).


附录,截至2015年4月:自2011年中期以来,我们已经批准了C++ 11和C++ 14标准,编译器现在通常支持标题中的C++ 11 std::towstring功能<string>; 它既方便itoa又安全.

  • 如果每个人都RTFM并理解它就不需要像StackOverflow这样的网站.通常情况下,FM编写得很糟糕或者说很臃肿,以至于你无法看到隐藏在技术语言页面中的内容.感谢StackOverflow将我们从错误的FM中解救出来. (3认同)