C++ int转string(stringstream可转更多类型)

一、使用atoi

说明:

itoa(   int   value,   char   *string,   int   radix   );  
    第一个参数:你要转化的int;  
    第二个参数:转化后的char*;  
    第三个参数:你要转化的进制;

举例:

 1 //-------------------------------------
 2 //功能:C++ int 转 string (使用atoi)
 3 //环境:VS2005
 4 //-------------------------------------
 5 #include "stdafx.h"
 6 #include <iostream>
 7 using namespace std;
 8 int main(int argc, char* argv[])
 9 {
10     int n = 30;
11     char c[10];
12     itoa(n, c, 2);
13     cout << "2-> " << c << endl;
14     itoa(n, c, 10);
15     cout << "16-> " << c << endl;
16     itoa(n, c, 16);
17     cout << "10-> " << c << endl;
18     system("pause");
19     return 0;
20 }

输出:

2-> 11110
16-> 30
10-> 1e

二、使用sprintf

头文件 #include<stdio.h>

语法: int sprintf(string format, mixed [args]...);

返回值:字符串长度(strlen)

转换字符

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

% 印出百分比符号,不转换。

b 整数转成二进位。

c 整数转成对应的 ASCII 字元。

d 整数转成十进位。

f 倍精确度数字转成浮点数。

o 整数转成八进位。

s 整数转成字串。

x 整数转成小写十六进位。

X 整数转成大写十六进位。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
举例:

 1 //-------------------------------------
 2 //功能:C++ int 转 string (使用sprintf)
 3 //环境:VS2005
 4 //-------------------------------------
 5 #include "stdafx.h"
 6 #include <iostream>
 7 #include <string>
 8 using namespace std;
 9 int main()
10 {
11     int n = 30;
12     char c[20];
13     sprintf(c, "%d", n);
14     cout << c << endl;
15     sprintf(c, "%o", n);
16     cout << c << endl;
17     sprintf(c, "%X", n);
18     cout << c << endl;
19     sprintf(c, "%c", n);
20     cout << c << endl;
21     float f = 24.678;
22     sprintf(c, "%f", f);
23     cout << c << endl;
24     sprintf(c, "%.2f", f);
25     cout << c << endl;
26     sprintf(c, "%d-%.2f", n, f);
27     cout << c << endl;
28     system("pause");
29     return 0;
30 }

输出:

30
36
1E//注:这里是个特殊符号
24.677999
24.68
30-24.68

三、使用stringstream

Linux下编译通过的通用模板(int,double,char[]通过,推荐):

/*
convert other data to string
usage :
    string str = m_toStr<int>(12345);
*/
template <class T> string m_toStr(T tmp)
{
    stringstream ss;
    ss << tmp;
    return ss.str();
}

  

其他例子:

//-------------------------------------
//功能:C++ int 转 string (使用stringstream)
//环境:VS2005
//-------------------------------------
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    stringstream strStream;
    int a = 100;
    float f = 23.5566;
    strStream << a << "----"<< f ;
    string s = strStream.str();
    cout << s << endl;
    system("pause");
    return 0;
}

输出:

100----23.5566

四、其它

1.sprintf可能引起缓冲区溢出,可以考虑使用 snprintf 或者非标准的 asprintf

2.如果是mfc程序,可以使用 CString::Format

3.如果使用boost,则可以直接使用: string s = boost::lexical_cast <string>(a);

4.atoi 也是不可移植的。

五、其它NB方法

//-----------------------------------------------------------------------------------

// 参考引用 :

// http://baike.baidu.com/view/982195.htm?fr=ala0_1_1

// http://baike.baidu.com/view/1295144.htm?fr=ala0_1

// http://pppboy.blog.163.com/blog/static/3020379620085511954382/

//-----------------------------------------------------------------------------------

C++ int转string(stringstream可转更多类型),布布扣,bubuko.com

时间: 2024-10-05 13:00:05

C++ int转string(stringstream可转更多类型)的相关文章

C++中int转string与string转int

#include "stdafx.h" #include "string" #include "iostream" #include "vector" #include "sstream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //string 转 int stringstream ss; string str; int i;

int与string的相互转换

<1>stringstream 的方式 C++标准库里面有一个stringstream可以用于各种数据类型之间的转换.无论是从int到string,还是从string到int都可以使用这种方法. 需要包含的头文件是<sstream>. 使用方法如下: #include <sstream> #include <iostream> #include <string> using namespace std; int main() { string s

c++学习 - int 和 string 的相互转换

在C++中会碰到int和string类型转换的. string -> int 首先我们先看两个函数: atoi 这个函数是把char * 转换成int的.应该是属于标准库函数.在想把string 转换成int的时候,需要以下流程: string -> char * -> int 如此才可以,例子如下: string a = "1234"; int b = atoi(a.c_str()); 这样打印b的时候,就是1234了. itoa 这个函数在我搜索的时候,好像不属于

linux int to string 方法

最近从windows 移植程序的时候发现to_string()函数在linux 中不能用,网上找了几种方法,觉得使用stringstream对象来实现类型转化比较好一点. 你只需在你工程中加入下面的to_sting()函数,就不需要修改你原程序了.(这篇只是本人移植工程时的心得,高手绕过!) /* * to_string.cpp * Created on: 2014年9月11日 * Author: tursunjan * linux int to string */ #include<iostr

C++ int转string

不论是过去写的这个转换方法,还是今天看到的这个: string cvt2str( int x ) { int d = x; string ans = ""; while( x > 0 ) { d = x%10; ans = char(d+'0')+ans; x /= 10; } return ans; } 转换方法,都不是很好. 我最常用的方法是这样: #include <sstream> std::string int2s(int num) { std::strin

C++: int和string相互转换

如果在一个C++的程序中经常会用到int和string之间的互换,个人建议可以写成一个函数,下次用的时候直接调用即可. #include <iostream> #include <string> #include <sstream> using namespace std; // int -> string string intToString(int num) { stringstream str0; string str; str0 <<num;

C++ int与string的转化

int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释.8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X. string前后加上双引号,告诉编译器把它当成一串字符来解释. 注意:对于字符,需要区分字符和字符表示的数值.比如:char a = 8:char b = '8',a表示第8个字符,b表示字符8,是第56个字符. int转化为s

C++实现to_string函数--int to string

to_string()函数返回字符串形式, 例如: #include<iostream> #include<string> using namespace std; int main() { int i=123; //aastring s=to_string(134) + "abc"; string s=to_string(i) + "abc"; cout<<s<<endl; system("pause&qu

C++里的int 和string类型相互转换

C++不像Java和C#一样在进行数据类型转换时直接调用一些类方法就可以了,使用起来很简单. 一个很简单的例子就是string str="D:\\"+1+".txt";这在Java或者C#里面是可以自动拆箱和包 箱就可以了,但是在C++里面是不可以的.当然这只有一个文件还好,但是当我们要使用for循环去遍 厉一个文件夹下的1,2,3...命名的文件时或许就有点麻烦了.由于我自己碰到过这种情况,所以这里写 写几种方法.或许不是最好的方法,但是权当练练笔了,如果你发现错