21xrx.com
2024-11-08 21:17:40 Friday
登录
文章检索 我的文章 写文章
C++中将字符串转换为数字
2023-07-11 04:54:21 深夜i     --     --
C++ 字符串 转换 数字

在C++中,将字符串转换为数字是一项常见的操作,因为我们常常需要从用户输入的字符串中提取出数字数据进行计算或处理。虽然C++中并没有提供直接将字符串转换为数字的函数,但是我们可以利用一些库函数或自己编写代码来实现这一操作。

以下是一些常见的方法:

1.使用C++标准库函数:

C++标准库提供了一些函数可以将字符串转换为数字,比如atoi、atol、atof等。这些函数都定义在 头文件中。其中,atoi函数可以将一个字符串转换为整型数字,例如:


#include <cstdlib>

#include <iostream>

using namespace std;

int main() {

  string str = "123";

  int num = atoi(str.c_str());

  cout << num << endl;

  return 0;

}

输出结果为123,表示将字符串“123”转换为整型数字123。

2.使用STL算法实现:

STL算法提供了一个std::transform函数,可以将一个容器中的每个元素通过一个函数转换为另一个容器中的元素。我们可以利用这个函数,将字符串中的每个字符转换为数字。例如:


#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

//将字符转换为数字的函数

int charToNum(char c)

  return c - '0';

int main() {

  string str = "12345";

  vector<int> nums(str.size());

  //使用transform函数将每个字符转换为数字,存放到容器中

  transform(str.begin(), str.end(), nums.begin(), charToNum);

  for(int i = 0; i < nums.size(); i++) {

    cout << nums[i] << " ";

  }

  cout << endl;

  return 0;

}

输出结果为1 2 3 4 5,表示将字符串“12345”转换为整型数组[1, 2, 3, 4, 5]。

3.手写转换函数:

如果以上方法无法满足需求,我们也可以根据字符串的规则,手写一个转换函数。例如,我们可以利用ASCII码,将字符转换为数字。具体方法如下:


#include <iostream>

using namespace std;

//将字符串转换为数字的函数

int stringToNum(string str) {

  int num = 0, symbol = 1; //symbol表示字符串的符号,正数为1,负数为-1

  for(int i = 0; i < str.size(); i++) {

    if(str[i] == '+') //如果是加号

    else if(str[i] == '-') //如果是减号

    else if(str[i] >= '0' && str[i] <= '9') { //如果是数字,将其转换为数字类型

      num = num * 10 + (str[i] - '0');

    }

    else 返回0

      return 0;

    

  }

  return num * symbol;

}

int main() {

  string str1 = "123";

  string str2 = "-456";

  string str3 = "abcd";

  cout << stringToNum(str1) << endl; //输出结果为123

  cout << stringToNum(str2) << endl; //输出结果为-456

  cout << stringToNum(str3) << endl; //输出结果为0

  return 0;

}

以上是C++中将字符串转换为数字的三种方法,可以根据具体需求选择适当的方式进行操作。需要注意的是,在进行转换时,要确保字符串中只包含数字和符号,否则可能会出现错误。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复