在 C++ 里,如果需要把 int 的数值直接转成字符串(例如对于整数123,我能得到字符串”123″),我们可以用很多种方法来实现:

  1. 用 C++ 里的流控制,可以轻松地实现整数转成字符串的功能:
#include <sstream>
#include <iostream>

main()
{
    int abc = 123;
    std::ostringstream out;
    out << abc;
    std::cout << out.str() << std::endl;
}

下面是宽字符版本的演示程序,稍微有点不同,则可以用下面的方法:

int current = 111;<br /> std::wostringstream int2string;<br /> int2string << current;

wstring temp_file = int2string.str().c_str();
wprintf(L”current filename is: %s\n”, temp_file.c_str());
wprintf(L”current filename is: %s\n”, int2string.str().c_str());

  1. Boost 是 C++ 的准标准库,我们当然应该尝试学习使用 Boost 来完成这个转换,例子如下:
#include <boost/lexical_cast.hpp>

main() { int abc = 123; std::string s = boost::lexical_cast<std::string>(abc);

printf("test for string: %s",s.c_str());

}

  1. 用 C 标准库里的 sprintf 或是 swprintf 函数,注意,sprintf 需要头文件 <stdio.h>,而 swprintf 需要 <stdio.h> 或者 <wchar.h> 头文件,可以看看MSDN里的例子
#include <stdio.h>

int main( void ) { char  buffer[200], s[] = “computer”, c = ’l’; int   i = 35, j; float fp = 1.7320534f;

/* Format and print various data: */
j  = sprintf( buffer,     "   String:    %s\n", s );
j += sprintf( buffer + j, "   Character: %c\n", c );
j += sprintf( buffer + j, "   Integer:   %d\n", i );
j += sprintf( buffer + j, "   Real:      %f\n", fp );

printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );

}

  1. 用 C 标准库的 itoa 函数也可以实现从字符串到数字的转换,itoa的例子代码:
/* itoa example */

#include <stdio.h> #include <stdlib.h>

int main () { int i; char buffer [33]; printf (“Enter a number: “); scanf ("%d”,&i); itoa (i,buffer,10); printf (“decimal: %s\n”,buffer); itoa (i,buffer,16); printf (“hexadecimal: %s\n”,buffer); itoa (i,buffer,2); printf (“binary: %s\n”,buffer); return 0; }

同样,用 C 标准库的 atoi 函数可以实现从字符串到数字的转换,atoi的例子代码:

/* atoi example */

#include <stdio.h> #include <stdlib.h>

int main () { int i; char szInput [256]; printf (“Enter a number: “); fgets ( szInput, 256, stdin ); i = atoi (szInput); printf (“The value entered is %d. The double is %d.\n”,i,i*2); return 0; }

一般来讲,就上面这么四种常用的方法就够用了。