关于C++中数字字符串和进制转换的问题,在线等

在C++中,数字字符串和进制转换是常见的操作,可以使用标准库中的函数和方法来实现。下面是关于如何进行这些操作的详细解释和示例代码。

数字字符串转换为整数

十进制字符串转换为整数

可以使用 std::stoistd::stolstd::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::stoistd::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::stoistd::stolstd::stoll
  • 指定进制的数字字符串转换为整数:使用 std::stoistd::stol 等函数的第二个参数指定基数。
  • 整数转换为字符串:使用 std::to_string
  • 整数转换为其他进制的字符串:可以使用 std::stringstream 或手动实现转换函数。

关键字

C++,数字字符串,进制转换,std::stoi,std::to_string,std::stringstream,二进制,八进制,十六进制,动态内存分配