std::string和int类型的相互转换(C/C++)
字符串和数值之前转换,是一个经常碰到的类型转换。
之前字符数组用的多,std::string的这次用到了,还是有点区别,这里提供C++和C的两种方式供参考:
优缺点:C++的stringstream智能扩展,不用考虑字符数组长度等..;但C的性能高
有性能要求的推荐用C实现版本。
上测试实例:
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream> using namespace std;
int main()
{
//C++ method
{
//int -- string
stringstream stream; stream.clear(); //在进行多次转换前,必须清除stream
int iValue = ;
string sResult;
stream << iValue; //将int输入流
stream >> sResult; //从stream中抽取前面插入的int值
cout << sResult << endl; // print the string //string -- int
stream.clear(); //在进行多次转换前,必须清除stream
string sValue="";
int iResult;
stream<< sValue; //插入字符串
stream >> iResult; //转换成int
cout << iResult << endl;
} //C method
{
//int -- string(C) 1
int iValueC=;
char cArray[]="";//需要通过字符数组中转
string sResultC;
//itoa由于它不是标准C语言函数,不能在所有的编译器中使用,这里用标准的sprintf
sprintf(cArray, "%d", iValueC);
sResultC=cArray;
cout<<sResultC<<endl; //int -- string(C) 2
int iValueC2=;
string sResultC2;
//这里是网上找到一个比较厉害的itoa >> 后文附实现
sResultC2=itoa(iValueC2);
cout<<sResultC2<<endl; //string -- int(C)
string sValueC="";
int iResultC = atoi(sValueC.c_str());
cout<<iResultC+<<endl;
} return ;
}
test.cpp
如下是网上找到的一片比较经典的itoa实现!
#define INT_DIGITS 19 /* enough for 64 bit integer */ char *itoa(int i)
{
/* Room for INT_DIGITS digits, - and '\0' */
static char buf[INT_DIGITS + ];
char *p = buf + INT_DIGITS + ; /* points to terminating '\0' */
if (i >= ) {
do {
*--p = '' + (i % );
i /= ;
} while (i != );
return p;
}
else { /* i < 0 */
do {
*--p = '' - (i % );
i /= ;
} while (i != );
*--p = '-';
}
return p;
}
itoa.c
std::string和int类型的相互转换(C/C++)的更多相关文章
- C++ 中 string, char*, int 类型的相互转换
一.int 1.int 转换成 string 1) to_string函数 —— c++11标准增加了全局函数std::to_string: string to_string (int val); s ...
- test.cpp:(.text+0xc0): undefined reference to `cv::imread(std::string const&, int)'
opencv报错: test.cpp:(.text+0xc0): undefined reference to `cv::imread(std::string const&, int)' te ...
- String,Integer,int类型之间的相互转换
String, Integer, int 三种类型之间可以两两进行转换 1. 基本数据类型到包装数据类型的转换 int -> Integer (两种方法) Integer it1 = new I ...
- golang 中string和int类型相互转换
总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: int, err := strconv.Atoi(string)string转成int64: int64, e ...
- string类型转换int类型
C++转换形式(C++11): int main(int argc, char* argv[]) { std::"; std::string str2 = "3.14159&quo ...
- 03.枚举和string以及int类型之间的转换
练习1: 将枚举类型强转成int类型 namespace _04.枚举类型的练习01 { //声明一个QQState类型的枚举 public enum QQState { OnLine, OffL ...
- arduino 通过串口接收string,int类型数据
串口接收string类型数据源码如下 String comdata = ""; void setup() { Serial.begin(9600); } void lo ...
- String与Int类型的转换
http://blog.sina.com.cn/s/blog_4f9d6b1001000bfo.html int -> String int i=12345; String s="&q ...
- [转] java中int,char,string三种类型的相互转换
原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.v ...
随机推荐
- hdu 1348 Wall(凸包模板题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 Wall Time Limit: 2000/1000 MS (Java/Others) M ...
- JS之正则表达式验证URL
function IsURL(str_url){ var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9 ...
- NSURLSession、NSURLConnection
NSURLSesstion GET方法 block回调方法NSString * urlStr = @"http://192.168.1.247:8100/stream?cname=cha_2 ...
- java常用的包的简介
java常用的包: java.lang:包含java语言的核心类,如String.math.system和thread类等,使用这个包下的类无需import导入,系统会自动导入这个包下的所有类. ...
- ListView中不同类型view的实现
首先创建请求队列,一个活动中只需要一个,因此放在Application中: public class MyApplication extends Application{ private static ...
- 关于Eclipse平台的使用和开发第一个SWT程序
IBM把投入巨资开发的Eclipse作为一个开源项目捐献给了开源组织Eclipse.org Eclipse出色而有独创的平台特性,现在仍由IBM子公司OTI(主要从事Eclipse开发的人)继续领导着 ...
- (转)STL
C++容器类 C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等:后者包括set,map,multiset,multimap等. 若需要存储的元素数在 ...
- 【转载】Git的安装与使用
Git的安装与使用 转载来源:http://www.cnblogs.com/Bonker/p/3441781.html 1,下载git https://code.google.com/p/msysg ...
- pat 1006 Sign In and Sign Out (25)
At the beginning of every day, the first person who signs in the computer room will unlock the door, ...
- 目前项目wordpress插件记录
Restrict User Content WordPress 后台只显示当前登录用户的文章.页面和媒体 Client Dash 可以根据不同的角色生成不同的后台的菜单