字符串与整型互转

整型转字符串

int n=6;
string s=to_string(n);

字符串转整型

stoi stol stoll

转int

#include <iostream>  
#include <string>  
#include <cstdlib> // 对于 atoi,但通常建议使用 std::stoi  
  
int main() {  
    std::string s = "111";  
    int a = std::stoi(s); // 使用 std::stoi 而不是 atoi  
    std::cout << "转为 int: " << a << std::endl;  
    // 或者,如果你坚持使用 atoi(不推荐,因为它不抛出异常):  
    // int a = atoi(s.c_str());  
    return 0;  
}

转long

#include <iostream>  
#include <string>  
#include <stdexcept> // 包含异常类型定义  
  
int main() {  
    std::string s = "111";  
    long a = std::stol(s); // 使用 std::stol  
    std::cout << "转为 long: " << a << std::endl;  
    return 0;  
}

在C++中,将字符串(std::string)转换为long long类型,可以使用标准库中的std::stoll函数。这个函数是C++11及以后版本中引入的,用于将字符串转换为long long类型的整数。如果转换失败(比如,字符串不是有效的数字表示),std::stoll会抛出一个std::invalid_argument异常(如果字符串为空或不含任何可转换的字符)或std::out_of_range异常(如果转换的数值超出了long long的表示范围)。

下面是一个示例代码,展示如何使用std::stoll

#include <iostream>  
#include <string>  
#include <stdexcept> // 包含异常类型定义  
  
int main() {  
    std::string str = "123456789012345";  
    try {  
        long long num = std::stoll(str);  
        std::cout << "转换成功: " << num << std::endl;  
    } catch (const std::invalid_argument& e) {  
        std::cerr << "转换错误: 无效的参数 " << e.what() << std::endl;  
    } catch (const std::out_of_range& e) {  
        std::cerr << "转换错误: 数值超出范围 " << e.what() << std::endl;  
    }  
  
    // 尝试一个无效字符串  
    std::string invalidStr = "这不是数字";  
    try {  
        long long invalidNum = std::stoll(invalidStr);  
    } catch (const std::invalid_argument& e) {  
        std::cerr << "转换错误: 无效的参数 " << e.what() << std::endl;  
    } catch (const std::out_of_range& e) {  
        std::cerr << "转换错误: 数值超出范围 " << e.what() << std::endl;  
    }  
  
    return 0;  
}

注意,std::stoll还允许你指定一个基数(radix),用于数字的转换。例如,如果你有一个十六进制字符串,并希望将其转换为long long,你可以这样做:

std::string hexStr = "1A3F";  
long long hexNum = std::stoll(hexStr, nullptr, 16); // 使用基数16进行转换  
std::cout << "十六进制转换: " << hexNum << std::endl;


在这个例子中,nullptr用于指示我们不关心转换过程中遇到的无效字符的起始位置。第三个参数16表示我们想要从十六进制字符串进行转换。

总之,std::stoll是C++中处理字符串到long long类型转换的推荐方式,特别是在C++11及以后的版本中。

atoi(s.c_str())

//转为int
string s="66";
int a;
a=atoi(s.c_str());

//转为long
string s="77";
int a;
a=atol(s.c_str());

//转为long long 
string s="88";
int a;
a=atoll(s.c_str());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值