C++中用于数值类型与字符串类型之间相互转换的to_string,stoi函数

C++中用于数值类型与字符串类型之间相互转换的函数to_string,stoi函数

1、数值转换为字符串(to_string函数)

C++11在<string>头文件中引入了to_string函数,该函数有多个重载版本,可以接收不同类型的参数(如int、long、double等)并返回相应的字符串表示。

使用示例:

#include <iostream>  
#include <string>  
  
int main() {  
    int num = 123;  
    std::string str = std::to_string(num);  
    std::cout << "Number as string: " << str << std::endl;  
      
    double pi = 3.14159;  
    std::string pi_str = std::to_string(pi);  
    std::cout << "Pi as string: " << pi_str << std::endl;  
      
    return 0;  
}

2、字符串转换为数值(sto~函数)

C++11同样在<string>头文件中提供了一系列函数用于将字符串转换为数值类型。这些函数包括stoi、stol、stoll、stoul、stoull、stof、stod和stold函数名字即string to 对应类型的首字母简写)。它们允许您指定一个字符串,一个可选的位置指针(用于指示转换结束后的位置),以及一个可选的基数(用于指定数值的进制)。

使用示例:

#include <iostream>  
#include <string>  
  
int main() {  
    std::string str = "12345";  
    int num = std::stoi(str);  
    std::cout << "String to int: " << num << std::endl;  
      
    std::string float_str = "3.14159";  
    double value = std::stod(float_str);  
    std::cout << "String to double: " << value << std::endl;  
      
    // 使用位置指针和基数  
    std::string hex_str = "A3F"; // 十六进制数  
    size_t pos;  
    int hex_num = std::stoi(hex_str, &pos, 16); // 基数为16  
    std::cout << "Hex string to int: " << hex_num << std::endl;  
      
    return 0;  
}

注意事项
当使用sto~转换函数时,如果字符串不能被正确解析为数值(例如,字符串包含非数字字符,能正确转换的必须要求string开头为数字,后面可以不是数字,如“123number”可以被转换成123,而“number123”会报错),则这些函数会抛出std::invalid_argumentstd::out_of_range异常。因此,在使用这些函数时,通常建议使用try-catch块来捕获并处理这些异常。
位置指针参数是可选的,但如果您提供了它,则可以在函数返回后查看字符串中第一个无法被解析为数值的字符的位置。
基数参数也是可选的,并默认为10(十进制)。但是,对于stoi、stol、stoll、stoul和stoull函数,您可以指定其他基数(如2、8、16等)来解析不同进制的数值字符串。

总结

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值