实战c++中的string系列--string与整型或浮点型互转
2015-12-09 21:32
477 查看
教科书中很少会提到string与int或是float的相互转换,但是在实际工程中会经常遇到,尤其在做UI控件显示的时候。比如说你要在edit控件中显示一个数值,那你就需要把这个数值首先转为string,然后再将这个string付给edit控件。
网上你会找到很多的转换方法,个人觉得效率差不多的情况下,简洁最好。
这里主要用到的是stringstreams:
stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:
stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:
下面就言归正传。
1、stringstreams中number to string
主要是两步走:
把number输出到stream
从stream中得到string
可以将上述代码缩略成一句话:
这里需要说明的是,number不限于int,float一样可以工作
2、stringstreams中string to number
同样需要两步走:
根据string构造一个stream
将value 读到变量中
同样,也可以对上面的代码进行简化:
3、C++11中number string互转
C++11为我们提供了更为便利的方法:
整型、浮点型转string
std::to_string
重载如下:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
字符串转整型:
stoi, stol, stoll
字符串转浮点型:
stof, stod, stold
4、C - stdio中的string与number转换
Number to String
String to Number
5、C - stdlib中的string与number转换
itoa
atoi
atol
atof
strtol
strtoul
strtod
但需要注意的是,上面的几个函数并非标准,尽量少用。
网上你会找到很多的转换方法,个人觉得效率差不多的情况下,简洁最好。
这里主要用到的是stringstreams:
stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:
#include <sstream>
stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:
string s; stringstream ss; int a, b, c; getline(cin, s); ss.clear(); ss.str(s); ss >> a >> b >> c;
下面就言归正传。
1、stringstreams中number to string
主要是两步走:
把number输出到stream
从stream中得到string
int Number = 123; string Result; ostringstream convert; convert << Number; Result = convert.str();
可以将上述代码缩略成一句话:
int Number = 123; string String = static_cast<ostringstream*>( &(ostringstream() << Number) )->str();
这里需要说明的是,number不限于int,float一样可以工作
2、stringstreams中string to number
同样需要两步走:
根据string构造一个stream
将value 读到变量中
string Text = "456"; int Result; istringstream convert(Text); if ( !(convert >> Result) ) { Result = 0; //if that fails set 'Result' to 0 }
同样,也可以对上面的代码进行简化:
string Text = "456"; int Number; if ( ! (istringstream(Text) >> Number) ) Number = 0;
3、C++11中number string互转
C++11为我们提供了更为便利的方法:
整型、浮点型转string
std::to_string
重载如下:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
字符串转整型:
stoi, stol, stoll
字符串转浮点型:
stof, stod, stold
int number = 123; string text = to_string(number); text = "456" number = stoi(number);
4、C - stdio中的string与number转换
Number to String
int Number = 123; char Result[16]; sprintf ( Result, "%d", Number );
String to Number
char Text[] = "456"; int Result; sscanf ( Text, "%d", &Result );
5、C - stdlib中的string与number转换
itoa
atoi
atol
atof
strtol
strtoul
strtod
但需要注意的是,上面的几个函数并非标准,尽量少用。
相关文章推荐
- 实战c++中的string系列--string与整型或浮点型互转
- C语言快排模板 qsort();函数应用
- HDU2089 不要62【数位DP】
- c++ 11 右值引用原理
- 设计Qt风格的C++API
- C++ offsetof
- c语言的笔记
- 一个刚出生的奶牛,4年生一只,以后每年生一只,现在有一只刚出生的奶牛,问20年以后一共多少只奶牛?
- c++
- VC++ 最小化到托盘、恢复
- C语言的这些事情有关内存
- C++中的强制类型转换
- VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
- c++
- C语言词法及语法定义-Lex,Yacc
- c++11多线程入门实例
- C语言学习笔记(20) 数组参数和指针参数分析
- C++中随机数的生成
- c语言,用顺序表的原理合并两个集合
- VC++ 截屏代码,并保存为想要的格式(BMP,JPG,PNG,GIF等格式)