C++ 字符串(string)和数值转换方法

记录一下在做题时的一大重点,字符串和数值转换的方法

1、stringstream流转换
需导入头文件 #include <sstream>
既可以将字符串转换为数值,也可以将数值转换为字符串,但需要注意转换类型。关于字符串流的涉及转换的其它内容就不写了,只说下转换

#include <iostream>
#include <algorithm>
#include <sstream>//头文件

using namespace std;

int main() {
    
    
    //字符串转换为数值,注意转换后的数值类型
    string str1 = "123";
    int num1;
    stringstream ss1;
    ss1 << str1;//入流
    ss1 >> num1;//出流
    cout << num1 << endl;
    string str2 = "3.1456";
    double num2;
    stringstream ss2;
    ss2 << str2;
    ss2 >> num2;
    cout << num2 << endl;
    //以下为数值转换为字符串,相对就不需要怎么关注数值类型了
    string str3;
    double num3=255.255;
    stringstream ss3;
    ss3 << num3;
    ss3 >> str3;
    cout << str3 << endl;
    return 0;
}

在这里插入图片描述
2、C++11新增函数转换
以下函数为C++11新增的函数,部分IDE需要勾选某些选项才能使用高版本的C++语法。string字符串转换为数值类型,就不说char数组了

  1. stoi(str),将字符串str转换为int
  2. stof(str),将字符串str转换为float
  3. stod(str),将字符串str转换为double
  4. stol(str),将字符串str转换为long
  5. stoll(str),将字符串str转换为long long
  6. stold(str),将字符串str转换为long double
  7. to_string(num),将数值类型num转换为字符串

提一句,以上字符串转数值的函数是可以规定转换范围的,也可以将n进制的字符串转换为10进制。

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    
    
    //字符串转换为数值
    string str1 = "435";
    int num1 = stoi(str1);
    cout << num1 << endl;
    string str2 = "435.435";
    double num2 = stod(str2);
    cout << num2 << endl;
    //以下为数值转为字符串
    int num3 = 124;
    string str3 = to_string(num3);
    cout << str3 << endl;
    double num4 = 3.14;
    string str4 = to_string(num4); //注意浮点型转换为字符串时会包括小数点后6位
    cout << str4 << endl;
    return 0;
}

在这里插入图片描述
3、题外话
使用C++做一些例如PAT等等有限制程序运行时间的算法题时,大家都知道scanf、printf是比cin、cout效率高很多的,有时候仅仅换一下,就从超时变成满分通过。但是当操作字符串string时,不能使用scanf("%s")、printf("%s")对string字符串进行输入输出,我就也记录下怎么使用scanf、printf输入和输出string字符串

#include <iostream>
#include <algorithm>
#include <stdio.h>

using namespace std;

int main() {
    
    
    char chs[20];
    printf("输入:");
    scanf("%s", chs);
    getchar();
    string str = chs;//可以直接赋值
    cout << str << endl;
    printf("%s\n", str.c_str());//c_str()函数用于string转换为char,其实还可以指定转换范围
    return 0;
}

在这里插入图片描述
string真是一用就上瘾,从此再无char[ ]字符数组

猜你喜欢

转载自blog.csdn.net/ccmtvv/article/details/106027472