C++中int与string的相互转换

  1. itoa()strtol()

    itoa()将int转化成char* 类型,注意这并不能将int转化成string,而是将char*并且这并不是一个标准的C函数,他是在Windows下的函数。

    strtol()将string类型转换成long型,一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(‘\0’)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回;若参数endptr为NULL,则会不返回非法字符串。

    // char* itoa(int value, char* string, int radix);
    // long int strtol(const char* nptr, char** endptr,int base);
    
    int aa = 30;
    char c[8];
    itoa(aa,c,16);
    cout << c << endl;      // 1e
    
    string s = "17";
    long num = strtol(s.c_str(), NULL, 10);
    cout << num << end;     // 17
    
  2. sprintf()sscanf()

    sprintf()将要转化的其他的类型利用sprintf函数格式化式的输出到buffer缓冲区中。

    sscanf()从一个字符串buffer中读进与指定格式相符的数据,具体用法见百度百科

    // int sprintf( char *buffer, const char *format, [ argument] … );
    // int sscanf(const char *buffer,const char *format,[argument ]...);
    
    int aa = 30;
    char c[8]; 
    int length = sprintf(c, "%05X", aa); 
    cout<< c << endl;           // 0001E
    
    
    sscanf("17","%d",&aa);
    cout << aa << endl;     // 17 
  3. stringstream/ostringstreamstringstream/istringstream

    sstream头文件定义了三个类型来支持内存IO(istringstream, ostringstream,stringstream),这些类型可以向string写入数据,可以从string中读取数据,就像string是IO流一样。
    istringstream从string中读取数据,一般使用 >>符号,将string中像控制台似的输出数据
    ostringstream将数据写入string中,一般使用 <<符号,将其他类型的数据输入string中
    stringstream则是以上两种只和,既可以读入也可以写入。

    
    #include <sstream>
    
    
    int aa = 30;
    
    stringstream stra;
    stra << aa;
    cout << stra.str() << endl;         // 30
    
    ostringstream strb;
    strb << aa;
    cout << strb.str() << endl;         // 30
    
    stringstream straa("17");
    straa >> aa;                            
    cout << aa << endl;                 // 17
    
    istringstream strbb("17");
    strbb >> aa;                            
    cout << aa << endl;                 // 17

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值