文章目录
一、num转string
头文件
#include<string>
#include<typeinfo>
1.1 int型数字转字符串
int num = 123;
string num2str = to_string(num);
cout << typeid(to_string(num) == typeid(string) << endl; // true
1.2 float/double型数字转字符串(不补0)
头文件
#include<sstream>
double num = 123.56; // float同理
stringstream sstream;
sstream << num;
string num2str = sstream.str(); // num2str = "123.56"
cout << typeid(sstream.str() == typeid(string) << endl; // true
sstream.clear(); // 若在用一个流中处理大量数据,则需手动清除缓存,小数据或不同流可忽略
缺点:处理大量数据转换速度较慢。stringstream
不会主动释放内存,如果要在程序中用同一个流,需要适时地清除一下缓存,用stream.clear()
二、string转num
2.1 使用stringstream类处理
- 字符串转int/float/double型数字(不补0)
string str = "456.78";
double num; // float同理,int需要str为整数,否则报错
stringstream sstream(str);
sstream >> num; // num = 456.78
cout << typeid(num == typeid(double) << endl; // true
2.2 使用<string>处理
头文件
#include<string>
string str = "456.78";
double num = stod(str); // num = 456.78
cout << typeid(num == typeid(double) << endl; // true
下面给出常用的转换方法,完整转换方法请见《C++中的字符串(String)和数值转换》
转换数字的类型 | 默认 | 完整参数 | 功能 | 全参例子 |
---|---|---|---|---|
int | stoi(s) | stoi(s,p,b) | 把字符串s从p开始转换成b进制的int | stoi(s, 0, 10) |
float | stof(s) | stof(s,p) | 把字符串s从p开始转换成float | |
double | stod(s) | stod(s,p) | 把字符串s从p开始转换成double | |
long | stol(s) | stol(s,p,b) | 把字符串s从p开始转换成b进制的long | stol(s, 0, 10) |
三、char[]转num
头文件
#include<cstdio>
char ch[100] = "-456.78";
// 注:atof(ch)只返回double数字,因此需要float可以自行转换成float
double num = atof(ch); // num = -456.78
cout << typeid(num == typeid(double) << endl; // true
下面给出常用的转换方法,完整转换方法请见《C++中的字符串(String)和数值转换》
转换数字的类型 | 默认 | 功能 |
---|---|---|
int | atoi(s) | 将字符串s[n]转换为整型值 |
double | atof(s) | 将字符串s[n]转换为double |
long | atol(s) | 将字符串s[n]转换为long |
四、char[]与string的相互转换
- 4.1 字符数组char[]转换string(直接赋值即可)
char ch[100] = "Hellow World";
string str = ch; // str = "Hellow World"
cout << typeid(str == typeid(string) << endl; // true
- 4.2 字符数组string转换char[]
string str = "Hellow World";
char ch[100] = {
0};
for (int i=0;i < str.length();i++)
ch[i] = str[i];
cout << ch << endl; // ch = "Hellow World"
五、字符串拼接
5.1 string + string
string str1 = "aaa";
strint str2 = "bbb";
cout << str1 + str2 << endl; // "aaabbb"
cout << str1 + "bbb" << endl; // "aaabbb"
5.1 string + char*
string str1 = "aaa";
char* str2 = "bbb";
cout << str1 + str2 << endl; // "aaabbb"
持续积累中~