试图将int转换为字符串

时间:2014-11-11 17:00:49

标签: c++

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

#include <sstream>
#include <string>
#include <iostream>

int num = 1;
ostringstream convert;
convert << num;
string str = convert.str();

但是,我收到错误消息

  

第7行:错误:预期的构造函数,析构函数或类型转换   在'&lt;&lt;'之前令牌

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

2 个答案:

答案 0 :(得分:3)

这里有2个问题,首先你缺少main所以随后这个代码在顶层无效(例如在main / functions / etc之外)。编译程序时,编译器会查找main,然后从该点开始执行代码。在main之前有一些允许的东西,但这个表达式不是其中之一。原因是因为您正在尝试计算某些东西,但程序流实际上并没有真正去那里,那么编译器如何决定何时执行该代码?重要的是,在未定义订单的主要订单之前和之前发生的订单。该声明不具有副作用,因此您发布的错误消息正在抱怨。编译器会查找main作为代码将从哪里开始执行,因此您希望将代码放在main中,因为这个原因(我知道这更多是因为它并非100%准确但我认为这是一个很好的起点/启发式让新程序员更好地理解)。您可能想要阅读此问题Is main() really start of a C++ program?

其次,命名空间存在问题。 ostringstream位于std命名空间中,请尝试使用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;
}

答案 1 :(得分:1)

#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;
}