gpt4 book ai didi

c++ - 尝试将 int 转换为字符串

转载 作者:太空狗 更新时间:2023-10-29 20:58:43 26 4
gpt4 key购买 nike

从下面的代码可以很清楚地看出我正在尝试将 int 转换为字符串。

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

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

但是,我收到错误消息

Line 7: error: expected constructor, destructor, or type conversion before '<<' token

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

最佳答案

这里有 2 个问题,首先您缺少 main 因此此代码在顶层无效(例如在 main/functions/etc 之外)。当您编译程序时,编译器会查找 main,然后从该点开始执行代码。在 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;
}

关于c++ - 尝试将 int 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com