正在尝试将int转换为字符串

Attempting to convert int to string

本文关键字:转换 字符串 int      更新时间:2023-10-16

从下面的代码中可以清楚地看到,我正试图将int转换为字符串。

#include <sstream>
#include <string>
#include <iostream>
int num = 1;
ostringstream convert;
convert << num;
string str = convert.str();

然而,我收到错误消息

第7行:错误:需要构造函数、析构函数或类型转换在'<lt;'代币

我做错了什么?这基本上是每个人都建议将int转换为字符串的代码片段。

这里有两个问题,首先您缺少main,因此随后此代码在顶层无效(例如在main/functions/etc之外)。当您编译程序时,编译器会查找main,然后从那时起开始执行代码。在main之前有一些东西是允许的,但这个表达式不是其中之一。原因是你试图计算一些东西,但程序流从未真正到达那里,那么编译器如何决定何时执行这些代码呢?在main中及之前发生的顺序很重要,因为没有定义顺序。这句话不是没有副作用的,所以这就是你发布的错误消息所抱怨的。编译器寻找main,因为这是代码开始执行的地方,所以出于这个原因,你想把你的代码放在main中(我知道这更像这个,它不是100%准确的,但我认为这是一个很好的起点/启发,让新程序员更好地理解)。您可能想阅读以下问题:main()真的是C++程序的开始吗?

其次是名称空间的问题。ostringstreamstd命名空间中,请尝试使用std::ostringstreamstring的情况类似,请使用std::string

有了这些变化,代码最终会看起来像这样:

int main(){
    int num = 1;
    std::ostringstream convert;
    convert << num;  //This isn't allowed outside of main
    std::string str = convert.str();
    std::cout << str;
    return 0;
}
#include <string>
#include <sstream>      // std::stringstream
#include <iostream>
int main()
{
   int num = 1;
   std::stringstream convert;
   convert << num;
   std::string str = convert.str();
   std::cout << str ;
   return 0;
}