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转化为string

1、使用itoa(int to string)

 1  //char *itoa( int value, char *string,int radix);
 2  // 原型说明:
 3  // value:欲转换的数据。
 4  // string:目标字符串的地址。
 5  // radix:转换后的进制数,可以是10进制、16进制等。
 6  // 返回指向string这个字符串的指针
 7
 8  int aa = 30;
 9  char c[8];
10  itoa(aa,c,16);
11  cout<<c<<endl; // 1e

注意:itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。

2、使用sprintf

 1  // int sprintf( char *buffer, const char *format, [ argument] … );
 2  //参数列表
 3  // buffer:char型指针,指向将要写入的字符串的缓冲区。
 4  // format:格式化字符串。
 5  // [argument]...:可选参数,可以是任何类型的数据。
 6  // 返回值:字符串长度(strlen)
 7
 8  int aa = 30;
 9  char c[8];
10  int length = sprintf(c, "%05X", aa);
11  cout<<c<<endl; // 0001E

3、使用stringstream

1  int aa = 30;
2  stringstream ss;
3  ss<<aa;
4  string s1 = ss.str();
5  cout<<s1<<endl; // 30
6
7  string s2;
8  ss>>s2;
9  cout<<s2<<endl; // 30

可以这样理解,stringstream可以吞下不同的类型,根据s2的类型,然后吐出不同的类型。 4、使用boost库中的lexical_cast

1  int aa = 30;
2  string s = boost::lexical_cast<string>(aa);
3  cout<<s<<endl; // 30

3和4只能转化为10进制的字符串,不能转化为其它进制的字符串。



string转化为int 1、使用strtol(string to long)

1 string s = "17";
2  char* end;
3  int i = static_cast<int>(strtol(s.c_str(),&end,16));
4  cout<<i<<endl; // 23
5
6  i = static_cast<int>(strtol(s.c_str(),&end,10));
7  cout<<i<<endl; // 17

2、使用sscanf

1 int i;
2  sscanf("17","%D",&i);
3  cout<<i<<endl; // 17
4
5  sscanf("17","%X",&i);
6  cout<<i<<endl; // 23
7
8  sscanf("0X17","%X",&i);
9  cout<<i<<endl; // 23

3、使用stringstream

1  string s = "17";
2
3  stringstream ss;
4  ss<<s;
5
6  int i;
7  ss>>i;
8  cout<<i<<endl; // 17

注:stringstream可以吞下任何类型,根据实际需要吐出不同的类型。 4、使用boost库中的lexical_cast

1  string s = "17";
2  int i = boost::lexical_cast<int>(s);
3  cout<<i<<endl; // 17

C++ int与string的转化

时间: 2024-11-05 10:54:28

C++ int与string的转化的相关文章

C++ int 和string互相转化

1.int转换成string string str=to_string(-12);//"-12" string str1=to_string(12);//"12" string str2=to_string(-1+2);//"1" 2.string转换成int string str=to_string(-12);//"-12" //先转化为char*型,而后再转化为int int a=atoi(str.c_str());//-

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(stringstream可转更多类型)

一.使用atoi 说明: itoa(   int   value,   char   *string,   int   radix   );      第一个参数:你要转化的int;      第二个参数:转化后的char*;      第三个参数:你要转化的进制; 举例: 1 //------------------------------------- 2 //功能:C++ int 转 string (使用atoi) 3 //环境:VS2005 4 //-------------------

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相互转换

int -->  string 1.使用itoa()函数 将任意类型的数字变量转换为字串子变量. #include<stdio.h> #include<iostream> #include<string> using namespace std; int main() { int a= 123; char str[20] ; itoa(a,str,10); cout<<str<<endl; return 0; } 缺点:它是一个非标准的C

int与string的相互转换

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

JAVA中int、String的类型转换

int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i);这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? String -> int s="12345";int i;第一种方法:i=Integer.parseInt(s);第二种方法:i=Integer.valueOf(s).intValue();这两种方法有什么区别

java中Object转换成int或String类型方法

转载: http://www.cnblogs.com/1020182600HENG/p/6137206.html Object obj = getObject(); if(obj instanceof Integer) int value = (Integer)obj; 1 String转换为int类型的方法: 1. Integer.parseInt([String]) 2.Integer.valueOf([String]).intValue(); 3.Integer.decode([Strin

int 和 string 相互转换(简洁版)

string int2str(int x) { if (x) return num2str(x/10)+string(1,x%10+'0'); else return "";} int str2int(string s) { int x = 0; for (char it : s) x = x*10+it-'0'; return x;} PS:谁还能更短(>.<)