zoukankan      html  css  js  c++  java
  • C/C++中字符串与数字转换

    本文总结了四种字符串和数字相互转换的方法,方法一和方法二是c++中的方法,方法三和方法四是C语言库函数的方法。

    方法一:c++11中string中添加了下面这些方法帮助完成字符串和数字的相互转换

        函数原型:float stof (const string& str, size_t* idx = 0);

        函数原型:string to_string (float val);

    #include <iostream>
    #include <string>
    
    using namespace std;
    int main() {
        cout << stof("123.0") <<endl;
        size_t pos;
        cout << stof("123.01sjfkldsafj",&pos) <<endl;
        cout << pos << endl;
        cout << to_string(123.0) << endl;
        return 0;
    }

     方法二:C++中使用字符串流stringstream来做类型转化。stingstream能将任何类型轻松转变为字符串类型,也能将字符串类型转变为数字类型。有点类似<stdio.h>中的sprintf和sscanf函数,但是stringstream操作更加的安全、不会产生数组溢出等问题,而且操作简单。注意stringstream不会主动释放内存,要使用clear()函数释放内存

    #include <iostream>
    #include <string>
    #include <sstream>
    
    using namespace std;
    int main() {
        ostringstream os;
        float fval = 123.0;
        os << fval;
        cout << os.str() << endl;
    
        istringstream is("123.01");
        is >> fval;
        cout << fval << endl;
        return 0;
    }

    三.C语言中的stdio.h中的sprintf、sscanf

    sprintf 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。

    sscanf 读取格式化的字符串中的数据。

     1. 可以用sprintf函数将数字转换成字符串
             int H, M, S;
             string time_str;
             H=seconds/3600;
             M=(seconds%3600)/60;
             S=(seconds%3600)%60;
             char ctime[10];
             sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串
             time_str=ctime; // 结果
    2. 与sprintf对应的是sscanf函数, 可以将字符串转换成数字
        char str[] = "15.455";
         int i;
         float fp;
         sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
         sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
         printf( "Integer: = %d ", i+1 );
         printf( "Real: = %f ", fp+1 );
         return 0;
        输出如下:
        Integer: = 16
        Real: = 16.455000

    四.C标准库stdlib.h中的atoi, atof, atol, atoll 函数

    1. itoa函数
    char *itoa(int value, char *string, int radix);
    value: 待转化的整数。
    radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
    * string: 保存转换后得到的字符串。
    返回值:
    char * : 指向生成的字符串, 同*string。
    备注:该函数的头文件是"stdlib.h"
    2. atoi
      C语言库函数名: atoi
      功 能: 把字符串转换成整型数
      函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 时停止转换,返回整型数。
      原型: int atoi(const char *nptr);
      需要用到的头文件: #include <stdlib.h>
  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/wxquare/p/6529027.html
Copyright © 2011-2022 走看看