关于C++中数字字符串和进制转换的问题,在线等
在C++中,数字字符串和进制转换是常见的操作,可以使用标准库中的函数和方法来实现。下面是关于如何进行这些操作的详细解释和示例代码。
数字字符串转换为整数
十进制字符串转换为整数
可以使用 std::stoi
、std::stol
和 std::stoll
函数来转换十进制字符串为整数。
cpp#include <iostream>
#include <string>
int main() {
std::string str = "12345";
int num = std::stoi(str);
long num_long = std::stol(str);
long long num_long_long = std::stoll(str);
std::cout << "Integer: " << num << std::endl;
std::cout << "Long: " << num_long << std::endl;
std::cout << "Long long: " << num_long_long << std::endl;
return 0;
}
数字字符串转换为其他进制的整数
可以使用 std::stoi
和 std::stol
等函数的第二个参数来指定基数(进制)。
cpp#include <iostream>
#include <string>
int main() {
std::string binary_str = "1101";
std::string octal_str = "17";
std::string hex_str = "1A";
int binary_num = std::stoi(binary_str, nullptr, 2);
int octal_num = std::stoi(octal_str, nullptr, 8);
int hex_num = std::stoi(hex_str, nullptr, 16);
std::cout << "Binary to int: " << binary_num << std::endl;
std::cout << "Octal to int: " << octal_num << std::endl;
std::cout << "Hex to int: " << hex_num << std::endl;
return 0;
}
整数转换为字符串
可以使用 std::to_string
函数将整数转换为字符串。
cpp#include <iostream>
#include <string>
int main() {
int num = 12345;
std::string str = std::to_string(num);
std::cout << "String: " << str << std::endl;
return 0;
}
整数转换为其他进制的字符串
可以使用 std::stringstream
或手动实现进制转换函数。
使用 std::stringstream
cpp#include <iostream>
#include <sstream>
#include <bitset>
int main() {
int num = 29;
// 二进制
std::bitset<8> binary(num);
std::cout << "Binary: " << binary << std::endl;
// 八进制
std::stringstream ss;
ss << std::oct << num;
std::string octal_str = ss.str();
std::cout << "Octal: " << octal_str << std::endl;
// 十六进制
ss.str(""); // 清空字符串流
ss.clear(); // 清除错误标志
ss << std::hex << num;
std::string hex_str = ss.str();
std::cout << "Hex: " << hex_str << std::endl;
return 0;
}
手动实现进制转换函数
cpp#include <iostream>
#include <string>
#include <algorithm>
std::string toBinary(int num) {
std::string binary;
while (num > 0) {
binary += (num % 2 == 0 ? "0" : "1");
num /= 2;
}
std::reverse(binary.begin(), binary.end());
return binary;
}
std::string toOctal(int num) {
std::string octal;
while (num > 0) {
octal += std::to_string(num % 8);
num /= 8;
}
std::reverse(octal.begin(), octal.end());
return octal;
}
std::string toHex(int num) {
std::string hex;
const char* hex_digits = "0123456789ABCDEF";
while (num > 0) {
hex += hex_digits[num % 16];
num /= 16;
}
std::reverse(hex.begin(), hex.end());
return hex;
}
int main() {
int num = 29;
std::cout << "Binary: " << toBinary(num) << std::endl;
std::cout << "Octal: " << toOctal(num) << std::endl;
std::cout << "Hex: " << toHex(num) << std::endl;
return 0;
}
总结
- 数字字符串转换为整数:使用
std::stoi
、std::stol
、std::stoll
。 - 指定进制的数字字符串转换为整数:使用
std::stoi
、std::stol
等函数的第二个参数指定基数。 - 整数转换为字符串:使用
std::to_string
。 - 整数转换为其他进制的字符串:可以使用
std::stringstream
或手动实现转换函数。
关键字
C++,数字字符串,进制转换,std::stoi,std::to_string,std::stringstream,二进制,八进制,十六进制,动态内存分配