21xrx.com
2024-11-10 00:30:13 Sunday
登录
文章检索 我的文章 写文章
C++中的字符转数字方法详解
2023-07-04 19:50:35 深夜i     --     --
C++ 字符 转换 数字 方法

在C++中,我们经常需要将字符类型的数据转换成数字类型的数据,例如将一个字符串表示的数值转换为整型或浮点数等。本文将详解C++中常用的字符转数字的方法。

一、atoi

函数原型:int atoi (const char* str);

atoi函数是C语言中常用的字符串转整数函数,也可以用于C++中的字符串转整数。该函数将一个字符串转换为整型值,如果字符串无法转换,则返回0。

例如,我们将一个字符串"100"转换为整型值:


#include <cstdlib>

#include <iostream>

int main()

{

  char str[] = "100";

  int num = atoi(str);

  std::cout << "num = " << num << std::endl;

  return 0;

}

输出结果为:


num = 100

二、atof

函数原型:double atof (const char* str);

atof函数可以将一个字符串转换为浮点型值,也可以用于C++中的字符串转浮点数。和atoi函数类似,该函数也会返回0值表示转换失败。

例如,我们将一个字符串"1.23"转换为浮点型值:


#include <cstdlib>

#include <iostream>

int main()

{

  char str[] = "1.23";

  double num = atof(str);

  std::cout << "num = " << num << std::endl;

  return 0;

}

输出结果为:


num = 1.23

三、stoi

函数原型:int stoi (const string& str, size_t* idx = 0, int base = 10);

C++11标准中提供了一个新的字符转数字函数stoi,可以将一个字符串转换为整型值。该函数支持更多的数据类型和更多的进制数,比atoi更加灵活。

该函数的第一个参数是需要转换的字符串,第二个参数是返回未转化的字符串的指针位置。第三个参数是进制,默认是十进制。需要注意的是,如果字符串无法转换,则会抛出invalid_argument或out_of_range异常,我们需要进行异常处理。

例如,我们将一个字符串"123"转换为数值:


#include <iostream>

#include <string>

int main()

{

  std::string str = "123";

  int num = stoi(str);

  std::cout << "num = " << num << std::endl;

  return 0;

}

输出结果为:


num = 123

四、stof

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

C++11标准中还提供了一个新的字符转数字函数stof,可以将一个字符串转换为浮点型值。和stoi函数类似,该函数对数据类型和进制数的支持更加灵活。

stof函数的第一个参数是需要转换的字符串,第二个参数是返回未转化的字符串的指针位置。需要注意的是,如果字符串无法转换,则会抛出invalid_argument或out_of_range异常,我们需要进行异常处理。

例如,我们将一个字符串"1.23"转换为浮点型值:


#include <iostream>

#include <string>

int main()

{

  std::string str = "1.23";

  float num = stof(str);

  std::cout << "num = " << num << std::endl;

  return 0;

}

输出结果为:


num = 1.23

综上所述,C++中常用的字符转数字的方法主要有atoi、atof、stoi和stof等函数。我们需要根据项目的需要进行选择,并进行异常处理以保证程序的健壮性。

  
  

评论区

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