21xrx.com
2025-04-07 09:26:46 Monday
文章检索 我的文章 写文章
C++中如何将字符串转换为数字?
2023-07-04 08:25:02 深夜i     12     0
C++ 字符串 转换 数字

在C++中,我们经常需要将字符串转换为数字类型以便使用。比如我们需要将从外部读取的字符串类型的数字数据转换为整型类型以方便进行数值计算等操作。下面介绍几种方法。

一、使用stringstream

stringstream是C++中常见的字符串流,可以将字符串转化为各种类型数据。例如,可以将字符串转换为整型数字:

#include <sstream>
#include <iostream>
using namespace std;
int main()
  string str = "123";
  int num ;
  stringstream ss;
  ss << str;
  ss >> num;
  cout << num << endl;
  return 0;

该程序的输出结果为:

123

在这段代码中,我们把一个字符串对象传递给一个stringstream对象。然后,构造的stringstream对象将字符串对象的数据存储到一个缓冲区中,从而可以使用位运算符从stringstream对象中提取出转换后的整型数据。

二、使用atoi()函数

atoi()是C语言标准库中的一个函数,也可以用于C++中。它能够将字符串转化为整型数据。

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
  string str = "321";
  int num = atoi(str.c_str());
  cout << num << endl;
  return 0;
}

该程序的输出结果与前面示例程序相同。

在这段代码中,把一个字符串对象通过调用c_str()函数转化为C风格的字符数组。此时该字符数组就可以传递给atoi()函数实现字符串转换为整型数字。

三、使用stod()和stoi()函数

C++11中引入的两个函数stod()和stoi(),能够将字符串转化为浮点型和整型数据:

#include <string>
#include <iostream>
using namespace std;
int main()
{
  string s = "123";
  int num = stoi(s);
  double decimal = stod(s);
  cout << "string to int: " << num << endl;
  cout << "string to double: " << decimal << endl;
  return 0;
}

该程序的输出为:

string to int: 123
string to double: 123

这是因为填入的字符串没有小数点,两个函数在没有小数点的情况下将返回int类型的数据。

总之,C++中有许多将字符串转换为数字类型的方法,上述介绍的仅是其中的几种方法,其他方法同样推荐使用。由于使用C++标准库函数实现字符串转换可以提高程序的可读性和可维护性,因此在适当的情况下,推荐使用C++标准库的解决方案。

  
  

评论区

请求出错了