C++ 转换为整数/浮点类型
示例
std::string可以使用转换函数将包含数字的转换为整数类型或浮点类型。
请注意,所有这些函数在遇到非数字字符后"123abc"都会立即停止解析输入字符串,因此将转换为123。
该std::ato*系列函数C风格字符串(字符数组)转换为整数或浮点类型:
std::string ten = "10";C ++ 11double num1 = std::atof(ten.c_str());
int num2 = std::atoi(ten.c_str());
long num3 = std::atol(ten.c_str());
long long num4 = std::atoll(ten.c_str());
但是,不建议使用这些函数,因为0如果它们无法解析字符串,则它们将返回。这很不好,因为0例如输入字符串为“ 0”,这也可能是有效结果,因此无法确定转换是否真正失败。
较新std::sto*的函数系列将std::strings转换为整数或浮点类型,如果它们无法解析其输入,则抛出异常。如果可能,您应该使用以下功能:
C ++ 11std::string ten = "10";int num1 = std::stoi(ten);
long num2 = std::stol(ten);
long long num3 = std::stoll(ten);
float num4 = std::stof(ten);
double num5 = std::stod(ten);
long double num6 = std::stold(ten);
此外,与该std::ato*系列不同,这些函数还处理八进制和十六进制字符串。第二个参数是指向输入字符串(此处未显示)中第一个未转换字符的指针,第三个参数是要使用的基数。0是自动检测八进制(以开头0)和十六进制(以0x或开头0X)的值,其他任何值都是要使用的基数
std::string ten = "10";std::string ten_octal = "12";
std::string ten_hex = "0xA";
int num1 = std::stoi(ten, 0, 2); // 返回2
int num2 = std::stoi(ten_octal, 0, 8); // 返回10
long num3 = std::stol(ten_hex, 0, 16); // 返回10
long num4 = std::stol(ten_hex); // 返回0
long num5 = std::stol(ten_hex, 0, 0); // 返回10 as it detects the leading 0x
以上是 C++ 转换为整数/浮点类型 的全部内容, 来源链接: utcz.com/z/340686.html