C++ 11字符数组/字符串/数字转换/字符串拼接

一、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"

持续积累中~

参考文献

[1] C++ 字符串与字符数组详解
[2] C++中的字符串(String)和数值转换

猜你喜欢

转载自blog.csdn.net/SL_World/article/details/114365350