正在尝试将int转换为字符串
Attempting to convert int to string
从下面的代码中可以清楚地看到,我正试图将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++程序的开始吗?
其次是名称空间的问题。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;
}
#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;
}
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数