C++ int转string

一、使用atoi

说明:

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

举例:

//-------------------------------------
//功能:C++ int 转 string (使用atoi)
//环境:VS2005
//-------------------------------------
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
    int n = 30;
    char c[10];  

    itoa(n, c, 2);
    cout << "2-> " << c << endl;
    itoa(n, c, 10);
    cout << "16-> " <<  c << endl;
    itoa(n, c, 16);
    cout << "10-> " <<  c << endl;
    system("pause");
    return 0;
}

输出:

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 整数转成大写十六进位。

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

//-------------------------------------
//功能:C++ int 转 string (使用sprintf)
//环境:VS2005
//-------------------------------------
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n = 30;
    char c[20];
    sprintf(c, "%d", n);
    cout << c << endl;
    sprintf(c, "%o", n);
    cout << c << endl;
    sprintf(c, "%X", n);
    cout << c << endl;
    sprintf(c, "%c", n);
    cout << c << endl;
    float f = 24.678;
    sprintf(c, "%f", f);
    cout << c << endl;
    sprintf(c, "%.2f", f);
    cout << c << endl;
    sprintf(c, "%d-%.2f", n, f);
    cout << c << endl;
    system("pause");
    return 0;
}

输出:

30
36
1E
//注:这里是个特殊符号
24.677999
24.68
30-24.68
请按任意键继续. . .

三、使用stringstream

举例:

//-------------------------------------
//功能: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
请按任意键继续. . .

注意:

使用stringstream时的清空操作

      在C++中可以使用stringstream来很方便的进行类型转换,字符串串接,不过注意重复使用同一个stringstream对象时要先继续清空,而清空很容易想到是clear方法,而在stringstream中这个方法实际上是清空stringstream的状态(比如出错等),真正清空内容需要使用.str(“”)方法。

四、其它

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/

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

时间: 2024-10-31 07:51:45

C++ int转string的相关文章

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

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

浅述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

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

List当中indexOf(String, int), removeRange(int, int), lastIndexOf(String, int)的用法

问题描述 写一个方法传递List对象import java.util.*;..................static int i;public static void Test(List a){ a.add(1, "x"); // Add at location 1 a.add("x"); // Add at end addAll(fill(new ArrayList())); a.addAll(3, fill(new ArrayList())); .....

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),再