威尼斯wns.9778官网 > 计算机教程 > 【C 】字符串和数值类型的相互转化(借助STL)

原标题:【C 】字符串和数值类型的相互转化(借助STL)

浏览次数:123 时间:2019-11-15

C 11中int,float,double与string的转化,floatdouble

在C 11中可以使用std::to_string()函数将数值转换为string格式,十分方便。

以下部分来选自cplusplus.com。


写在文章开头的话

读完这篇文章后,你将学到下面的知识:
(1)如何利用标准库中的 std::stringstream 来完成字符串和数值类型的相互转换
(2)如何利用 C 11 提供的字符串转换函数,将std::string类型转换为数值类型

std::to_string

string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

Convert numerical value to string

Returns a string with the representation of val.

     在C 编程中有时会遇到字符串和数字的相互转化,以前学习的时候老师喜欢将这种转化当成作业,要我们写函数实现。但是实际为了方便准确还是会优先使用STL来完成。

示例

 1 // to_string example
 2 #include <iostream>   // std::cout
 3 #include <string>     // std::string, std::to_string
 4 
 5 int main ()
 6 {
 7   std::string pi = "pi is "   std::to_string(3.1415926);
 8   std::string perfect = std::to_string(1 2 4 7 14)   " is a perfect number";
 9   std::cout << pi << 'n';
10   std::cout << perfect << 'n';
11   return 0;
12 }

威尼斯wns.9778官网,     在 C 标准库中提供了字符串到数值类型的转化函数,但是没有提供数值到字符串的转换(不过有些系统如 Windows API中提供数值到字符串的转化)。先看看C标准库中的字符串转化函数,这些函数都包含在头文件 <cstdlib>中:

输出

pi is 3.141593

28 is a perfect numbe

威尼斯wns.9778官网 1

参考资料

[1]http://www.cplusplus.com/reference/string/to_string/

http://www.bkjia.com/cjjc/1048793.htmlwww.bkjia.comtruehttp://www.bkjia.com/cjjc/1048793.htmlTechArticleC 11中int,float,double与string的转化,floatdouble 在C 11中可以使用 std::to_string()函数将数值转换为string格式,十分方便。 以下部分来选自cpluspl...

表1  C 标准库中的字符串转换函数

这些函数的用法想必都比较熟悉就不多说了,细节可以参考 C或C 标准库。这里主要说下借助 C 标准模板库中的 std::stringstream 来完成字符串的转换, 以及 C 11新增的 std::string 转换函数。

平时我们在用 std::cout 和 std::cin 时,感觉很直接,它能根据你的数据类型自动的执行输入输出操作,无论是字符、整型、浮点型,它都能以字符串形式输出到控制台,同样也可以从控制台读入字符串,解析成各种数值类型。上面提到的 stringstream 派生自 iostream,继承了iostream的输入输出操作,你可以把它看成std::cout 和 std::cin的内存版本,对其进行的输入输出不是与控制台交互,而是与stringstream内部的字符串交互。下面是stringstream 的继承图:

威尼斯wns.9778官网 2

图1  C 标准I/O库继承图

接下来举两个例子来说明如何使用stringstream来进行字符串和数值类型的相互转化:

(1)字符串 --> 数值类型

     先准备好包含数值类型的字符串,然后定义 istringstream 实例,使用其输入操作将其内部的字符串解析为相应的数值类型,最后输出。

#include <iostream>
#include <sstream>

int main()
{
    string str = "12 3.14";
    istringstream in(str);
    int v1;
    double v2;
    in >> v1 >> v2;
    cout << "v1=" << v1 << " ,v2=" << v2 << endl;
    return 0;
}

运行结果:

v1=12 ,v2=3.14

(2)数值类型 --> 字符串

     先准备好数值类型数据,然后定义 ostringstream 实例,使用其输出操作将数值类型输出到 stringstream 内部字符缓冲区中,最后调用 ostringstream::str() 成员函数获取内部字符串。

#include <iostream>
#include <sstream>

int main()
{
    int v1 = 12;
    float v2 = 2.14f;
    double v3 = 3.1415926;
    long long v4 = 0x0123456789ABCDEF;
    ostringstream out;
    out << v1 << " "
        << v2 << " "
        << v3 << " "
        << hex << uppercase << v4;
    cout << "str=" << out.str() << endl;
    return 0;
}

运行结果:

本文由威尼斯wns.9778官网发布于计算机教程,转载请注明出处:【C 】字符串和数值类型的相互转化(借助STL)

关键词:

上一篇:LeetCode -- Nim Game

下一篇:没有了