博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::string和int类型的相互转换(C/C++)
阅读量:6702 次
发布时间:2019-06-25

本文共 2039 字,大约阅读时间需要 6 分钟。

 

字符串和数值之前转换,是一个经常碰到的类型转换。

之前字符数组用的多,std::string的这次用到了,还是有点区别,这里提供C++和C的两种方式供参考:

优缺点:C++的stringstream智能扩展,不用考虑字符数组长度等..;但C的性能高

有性能要求的推荐用C实现版本。

上测试实例:

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 int main() 8 { 9 //C++ method10 {11 //int -- string 12 stringstream stream;13 14 15 stream.clear(); //在进行多次转换前,必须清除stream16 int iValue = 1000;17 string sResult;18 stream << iValue; //将int输入流19 stream >> sResult; //从stream中抽取前面插入的int值20 cout << sResult << endl; // print the string21 22 //string -- int 23 stream.clear(); //在进行多次转换前,必须清除stream24 string sValue="13579";25 int iResult;26 stream<< sValue; //插入字符串27 stream >> iResult; //转换成int28 cout << iResult << endl;29 }30 31 //C method32 {33 //int -- string(C) 134 int iValueC=19000;35 char cArray[10]="";//需要通过字符数组中转36 string sResultC;37 //itoa由于它不是标准C语言函数,不能在所有的编译器中使用,这里用标准的sprintf38 sprintf(cArray, "%d", iValueC);39 sResultC=cArray; 40 cout<
<
> 后文附实现46 sResultC2=itoa(iValueC2); 47 cout<
<
test.cpp

 

如下是网上找到的一片比较经典的itoa实现!

1 #define INT_DIGITS 19        /* enough for 64 bit integer */ 2  3 char *itoa(int i) 4 { 5     /* Room for INT_DIGITS digits, - and '\0' */ 6     static char buf[INT_DIGITS + 2]; 7     char *p = buf + INT_DIGITS + 1;    /* points to terminating '\0' */ 8     if (i >= 0) { 9         do {10             *--p = '0' + (i % 10);11             i /= 10;12         } while (i != 0);13         return p;14     }15     else {            /* i < 0 */16         do {17             *--p = '0' - (i % 10);18             i /= 10;19         } while (i != 0);20         *--p = '-';21     }22     return p;23 }
itoa.c

转载于:https://www.cnblogs.com/book-gary/p/Basic_programming_0001.html

你可能感兴趣的文章
以前的“约炮神器”陌陌12月或赴美上市
查看>>
sublime 3 注册码
查看>>
10年微软MVP路(如何成为一个MVP?)
查看>>
uva 6957 Hyacinth bfs
查看>>
WINDOWS 的 MKLINK : 硬链接,符号链接 : 文件符号链接, 目录符号链接 : 目录联接...
查看>>
单例模式
查看>>
编译hibernate源代码
查看>>
Surface Pro 3 扩展坞体验
查看>>
MySQL 源码系列:1:窥探篇
查看>>
Codeforces Round #288 (Div. 2)D. Tanya and Password 欧拉通路
查看>>
repo总结
查看>>
pm2 安装使用
查看>>
2015必须推荐的Android框架,猿必读系列!
查看>>
书单:数学、物理类的「闲书」
查看>>
unity, stateMachine, change state name
查看>>
Java并发教程(Oracle官方资料)
查看>>
Erlang入门(四)——错误处理和鲁棒性
查看>>
Shell变量替换,命令替换,转义字符
查看>>
获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
查看>>
信号处理过程中的几种常见傅里叶相关的变换
查看>>