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
时间: 2024-10-28 02:20:24

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

string格式转化错误-string格式转化出错,求高手指导

问题描述 string格式转化出错,求高手指导 代码如下: public class TEST implements Extractable { private String getSqlStr() { StringBuffer buf = new StringBuffer(); buf.append(" SELECT nvl(ROUND(J.AMOUNT),'0') AS SHIHARAIKIN1, "); buf.append(" FROM T_WL_TAX_PRINCI

C++ int转string

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

C++: int和string相互转换

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

JAVA中int与string互转的效率对比

今天突然心血来潮,想看看int与string互转的效率,所以试一下. 1.int转string对比 众所周知,int转string有三种方法: <pre name="code" class="html">* (1) String.valueOf(i) * (2) Integer.toString(i) * (3) i + "" 下面是对比: public class TestInt2String { public static voi

浅述int与string类型转换的两种方法_java

具体详情如下所示: 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).intV

c++ int转string方法_C 语言

复制代码 代码如下: /************************************************************************/ /* int to string */ /************************************************************************/ std::string CCardDispatcher::ItoA(int n){ char ss[16]; //这个长度根据需要吧 sp

Python int与string之间的转化

string–>int 1.10进制string转化为int int('12') 2.16进制string转化为int int('12', 16) int–>string 1.int转化为10进制string str(18) 2.int转化为16进制string hex(18) 考虑,为什么没有16进制int转化为string,可以这么认为不管什么进制,python在内部表示都是10进制,先转化为10进制在进行.如16进制int转化为string,str(0x12),首先变为str(18),再

int 和 String 互相转换的多种方法 (转)

转换 5.1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 5.2 如何将整数 int 转换成字串 String ? A. 有叁种方法:

c#中int 转string 16进制和16转double的方法

0x开头的16进制没有负数和小数 #region change hex to double private Double HexConverToDouble(string hexString) { if (hexString == "") { return 0; } string data; if (hexString.StartsWith("0x")) { data = hexString.Substring(2); } else { data = hexStri