整型转字符串
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());