如何在C++中将int转换为string:完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++中的“Int转string”:为什么这个问题连经验丰富的开发者都感到困扰?

\n

想象一下这个场景:你正在编写一个C++程序,需要将数字显示在屏幕上,然后在其后添加文本——例如,“结果:42”。或者你需要将用户ID(int)以字符串形式保存到JSON文件中。看起来很简单,对吧?但问题来了——在C++中,你不能直接写string s = 42;。编译器会报错。

\n

“How can I convert int to string in C++?” 这个问题是Stack Overflow上最热门的问题之一(浏览量达数十万)。这并非偶然。与Python或JavaScript中“自动神奇地转换”不同,C++要求显式类型转换。但别担心!在本文中,我们将介绍5种经过验证的方法,从经典方法到现代C++20。您将了解哪种方法更快、哪种更方便,以及何时使用它们。

\n

开始吧!

\n\n

方法1:std::to_string——现代且简单(C++11及更新版本)

\n

从C++11开始,标准库中引入了std::to_string函数。这是在C++中将int转换为string最简单、最易读的方法。

\n
#include <iostream>\n#include <string>\n\nint main() {\n    int number = 2024;\n    std::string str = std::to_string(number);\n    std::cout << "字符串: " << str << std::endl;  // 输出: 字符串: 2024\n    return 0;\n}
\n

优点:

\n
    \n
  • 简洁明了——一行代码
  • \n
  • 支持int、long、float、double等数值类型
  • \n
  • 无需额外包含库(只需<string>)
  • \n
\n

缺点:

\n
    \n
  • 无法控制格式(位数、前导零)
  • \n
  • 如果调用数百万次,比底层方法慢
  • \n
\n

何时使用:在90%的情况下。对于不需要特定输出格式的常规任务,std::to_string是理想选择。

\n\n

方法2:std::stringstream——像瑞士军刀一样灵活

\n

如果你不仅需要转换数字,还需要格式化它(添加空格、更改进制),std::stringstream可以帮到你。这是来自<sstream>库的一个类,像一个“智能字符串”一样工作。

\n
#include <iostream>\n#include <sstream>\n#include <string>\n\nint main() {\n    int number = 255;\n    std::stringstream ss;\n    ss << "值: " << number << " (十六进制: " << std::hex << number << ")";\n    std::string result = ss.str();\n    std::cout << result << std::endl;\n    // 输出: 值: 255 (十六进制: ff)\n    return 0;\n}
\n

优点:

\n
    \n
  • 完全控制格式(std::hex、std::oct、std::setw、std::setprecision)
  • \n
  • 可以即时拼接字符串和数字
  • \n
\n

缺点:

\n
    \n
  • 由于创建stringstream对象,比std::to_string慢
  • \n
  • 简单转换需要更多代码
  • \n
\n

何时使用:当需要复杂格式化或转换为不同进制时。

\n\n

方法3:sprintf和snprintf——来自C语言的古老方法

\n

一种古老但可靠的方法,源自C语言。sprintf函数将格式化字符串写入char数组。在C++中也可以使用,但需要注意缓冲区溢出。

\n
#include <iostream>\n#include <cstdio>  // 用于sprintf\n#include <cstring> // 用于strlen\n\nint main() {\n    int number = 42;\n    char buffer[50];\n    sprintf(buffer, "%d", number);\n    std::string str(buffer);\n    std::cout << "结果: " << str << std::endl;\n    return 0;\n}
\n

重要提示:

博客

书籍推荐