• 字符串转数字 (With C++)


    1.stoi()、stof()、stod() 实现字符串转 int、float、double。

    • stoi -> string to integer
    • stof -> string to float
    • stod -> string to double

    函数原型:

    int stoi (const string&  str, size_t* idx = 0, int base = 10); //ids: 指明从字符串何处开始转,base: 转换成几进制数
    float stof (const string&  str, size_t* idx = 0); //ids: 指明从字符串何处开始转(默认从字符串首字母开始)
    double stod (const string&  str, size_t* idx = 0); //ids: 指明从字符串何处开始转(默认从字符串首字母开始)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main() {
     5     string s = "3.14"; //数字字符串
     6     int i = stoi(s);  //字符串转整型
     7     float f = stof(s); //字符串转浮点型
     8     double d = stod(s); //字符串转双精度浮点型
     9     cout << i << " " << f << " " << d << endl;
    10     return 0;
    11 }

    notes: 字符串中如果含有非数字的字符,则会抛出异常。如果非数字字符在数字字符之后,会自动截取前面的数字字符!

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main() {
     5     string s = "abc3.14"; //非法数字字符串
     6     int i = stoi(s);  //字符串转整型
     7     float f = stof(s); //字符串转浮点型
     8     double d = stod(s); //字符串转双精度浮点型
     9     cout << i << " " << f << " " << d << endl;
    10     return 0;
    11 }

    Error: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion

    #include<iostream>
    using namespace std;
    
    int main() {
        string s = "3.14abd#"; //数字字符串,只会截取3.14,abc会抛弃掉!
        int i = stoi(s);  //字符串转整型
        float f = stof(s); //字符串转浮点型
        double d = stod(s); //字符串转双精度浮点型
        cout << i << " " << f << " " << d << endl;
        return 0;
    }
    Output:
    3 3.14 3.14

    2. 数字转字符串 -- to_string() and stringstream

    方法一:通过 to_string(value) 方法

    1 int main() {
    2     double PI = 3.1415926;
    3     string p = "PI is " + to_string(PI);
    4     cout << p << endl;
    5     return 0;
    6 }

    方法二:通过 stringstream 字符流操作

     1 #include<iostream>
     2 #include <sstream>
     3 using namespace std;
     4 
     5 int main() {
     6     double PI = 3.1415926;
     7     stringstream ss;  // 声明一个字符流对象
     8     string p;
     9     ss << PI;  // 将double型数据输入流中
    10     ss >> p;  // 将流中数据输出到字符串中
    11     cout << "PI is " << p << endl;
    12     return 0;
    13 }
  • 相关阅读:
    windows平台下一款强大的免费代理获取工具
    彻底搞懂Git Rebase
    line-height
    text-indent
    text-decoration
    text-align
    color
    CSS属性汇总
    font
    font-style
  • 原文地址:https://www.cnblogs.com/sheepcore/p/12371951.html
Copyright © 2020-2023  润新知