zoukankan      html  css  js  c++  java
  • C++ string与数值的转换

    一、基于C++11标准

      头文件:#include <string>

      函数:

      1.1 数值转string

      to_string(val):可以将其他类型转换为string。

      1.2 string转数值

      stoi(s, p, b):string转int

      stol(s, p, b):string转long

      stod(s, p, b):string转double

      stof(s, p, b):string转float

      stold(s, p, b):string转long dluble

      stoul(s, p, b), stoll(s, p, b), stoull(s, p, b)等。

      备注:返回s的起始子串(表示整数内容的字符串)的数值;b表示转换所用的基数,默认为10(表示十进制);p是size_t的指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不返回下标。

     1 void testTypeConvert()
     2 {
     3     //int --> string
     4     int i = 5;
     5     string s = to_string(i);
     6     cout << s << endl;
     7     //double --> string
     8     double d = 3.14;
     9     cout << to_string(d) << endl;
    10     //long --> string
    11     long l = 123234567;
    12     cout << to_string(l) << endl;
    13     //char --> string
    14     char c = 'a';
    15     cout << to_string(c) << endl;   //自动转换成int类型的参数
    16     //char --> string
    17     string cStr; cStr += c;
    18     cout << cStr << endl;
    19  
    20  
    21     s = "123.257";
    22     //string --> int;
    23     cout << stoi(s) << endl;
    24     //string --> long
    25     cout << stol(s) << endl;
    26     //string --> float
    27     cout << stof(s) << endl;
    28     //string --> doubel
    29     cout << stod(s) << endl;
    30 }

    二、C++11之前的版本

      C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:

      从其它类型转换为string,定义一个模板类的方法。

      从string转换为其它类型,定义多个重载函数。

     1 #include <strstream>
     2 template<class T>
     3 string convertToString(const T val)
     4 {
     5     string s;
     6     std::strstream ss;
     7     ss << val;
     8     ss >> s;
     9     return s;
    10 }
    11  
    12  
    13 int convertStringToInt(const string &s)
    14 {
    15     int val;
    16     std::strstream ss;
    17     ss << s;
    18     ss >> val;
    19     return val;
    20 }
    21  
    22 double convertStringToDouble(const string &s)
    23 {
    24     double val;
    25     std::strstream ss;
    26     ss << s;
    27     ss >> val;
    28     return val;
    29 }
    30  
    31 long convertStringToLong(const string &s)
    32 {
    33     long val;
    34     std::strstream ss;
    35     ss << s;
    36     ss >> val;
    37     return val;
    38 }
    39  
    40 void testConvert()
    41 {
    42     //convert other type to string
    43     cout << "convert other type to string:" << endl;
    44     string s = convertToString(44.5);
    45     cout << s << endl;
    46     int ii = 125;
    47     cout << convertToString(ii) << endl;
    48     double dd = 3.1415926;
    49     cout << convertToString(dd) << endl;
    50  
    51     //convert from string to other type
    52     cout << "convert from string to other type:" << endl;
    53     int i = convertStringToInt("12.5");
    54     cout << i << endl;
    55     double d = convertStringToDouble("12.5");
    56     cout << d << endl;
    57     long l = convertStringToLong("1234567");
    58     cout << l << endl;
    59 }
  • 相关阅读:
    常用的16个Java实用工具类,Java开发人员请收藏!
    JVM内存区域与垃圾回收
    听说你还不知道Java代码是怎么运行的?
    Java 到底是值传递还是引用传递?
    Java线程池实现原理及其在美团业务中的实践
    别再说Java对象都是在堆内存上分配空间的了!
    面试常问的Java虚拟机内存模型,看这篇就够了!
    好用的Java工具类库,GitHub星标10k+你在用吗?
    MySQL 全文索引实现一个简单版搜索引擎
    laravel 数据库里的图片重命名
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/8092649.html
Copyright © 2011-2022 走看看