从下面的代码可以清楚地看到我试图将int转换为字符串。
#include <sstream>
#include <string>
#include <iostream>
int num = 1;
ostringstream convert;
convert << num;
string str = convert.str();
但是,我收到错误消息
第7行:错误:预期的构造函数,析构函数或类型转换 在'&lt;&lt;'之前令牌
我做错了什么?这基本上是每个人都建议将int转换为字符串的相同代码片段。
答案 0 :(得分:3)
这里有2个问题,首先你缺少main
所以随后这个代码在顶层无效(例如在main / functions / etc之外)。编译程序时,编译器会查找main,然后从该点开始执行代码。在main之前有一些允许的东西,但这个表达式不是其中之一。原因是因为您正在尝试计算某些东西,但程序流实际上并没有真正去那里,那么编译器如何决定何时执行该代码?重要的是,在未定义订单的主要订单之前和之前发生的订单。该声明不具有副作用,因此您发布的错误消息正在抱怨。编译器会查找main作为代码将从哪里开始执行,因此您希望将代码放在main中,因为这个原因(我知道这更多是因为它并非100%准确但我认为这是一个很好的起点/启发式让新程序员更好地理解)。您可能想要阅读此问题Is main() really start of a C++ program?
其次,命名空间存在问题。 ostringstream
位于std
命名空间中,请尝试使用std::ostringstream
。 string
的情况类似,请使用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;
}