整数与字符串的转换

在 C++ 中,整数与字符串之间的转换是常见的操作,特别是在处理用户输入、文件读写、数据格式化等场景时。C++ 提供了多种方法来实现这种转换,下面将详细介绍这些方法。

字符串到整数的转换

  1. atoi 函数 atoi 是一个在 C 语言中广泛使用的函数,它将字符串转换为整数。在 C++ 中,atoi 同样可用,但请注意,它只接受 C 风格的字符串作为参数,即字符串的末尾需要有一个空字符('\0')。

    1#include <cstdlib>
    2int num = atoi("123");
    
  1. std::stoi 函数 std::stoi 是 C++11 引入的,它更加安全且功能更强大。它可以处理 C++ 风格的字符串,自动处理正负号,并且可以识别多种整数格式(如二进制、八进制、十六进制等)。
    1#include <string>
    2int num = std::stoi("123");
    
  2. std::istringstream 使用 std::istringstream 也可以实现字符串到整数的转换。
    1#include <sstream>
    2std::string str = "123";
    3int num;
    4std::istringstream iss(str);
    5iss >> num;
    

整数到字符串的转换

  1. itoa 函数 itoa 函数将整数转换为字符串。在 C++ 中,可以使用 sprintf 函数或 std::to_string 函数来达到类似的效果。
    1#include <cstdlib>
    2char buffer[10];
    3itoa(123, buffer, 10); // 将123转换为字符串并存储在buffer中
    
  2. std::to_string 函数 std::to_string 函数是 C++11 引入的,它将整数转换为字符串,并且更加安全和方便。
    1#include <string>
    2std::string str = std::to_string(123);
    
  3. std::ostringstream 使用 std::ostringstream 也可以实现整数到字符串的转换。
    1#include <sstream>
    2int num = 123;
    3std::ostringstream oss;
    4oss << num;
    5std::string str = oss.str();
    

注意事项

  • 在使用 atoiitoa 时,需要特别注意缓冲区溢出的问题。
  • std::stoistd::to_string 是 C++ 标准库中推荐使用的函数,它们提供了更好的安全性和便利性。
  • 使用 sprintfstd::ostringstream 时,需要确保目标缓冲区足够大,以避免缓冲区溢出。 通过以上介绍,您应该能够了解如何在 C++ 中实现整数与字符串之间的转换。这些方法各有优缺点,选择哪一种取决于您的具体需求和上下文环境。在现代 C++ 编程中,推荐使用 std::stoistd::to_string 函数,因为它们更加安全和高效。