Eclipse,C++方法str()无法解析
Eclipse, C++ method str() could not be resolved
使用默认的str()示例来自: http://www.cplusplus.com/reference/sstream/stringstream/str/
// stringstream::str
#include <string> // std::string
#include <iostream> // std::cout
#include <sstream> // std::stringstream, std::stringbuf
int main () {
std::stringstream ss;
ss.str ("Example string");
std::string s = ss.str();
std::cout << s << 'n';
return 0;
}
代码帮助程序说str()
无法解决,构建时没有与str()
相关的错误
我在日食中CDT GCC Built-in Compiler Settings
并且未选中使用带有标志的全局提供程序:
"${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}"
我也尝试来回更改工具链,但没有运气。
该问题在某种程度上是由 g++ 头文件的结构引起的。在标头<sstream>
中,仅定义了"基本"模板类。调用str()
方法时,我在ostringstream
时遇到了同样的错误。 当我将代码中的变量类型更改为std::basic_ostringstream<char>
时,错误消失了。自动完成也再次工作(它以前不起作用,这是一个好兆头,表明 eclipse 扫描仪以某种方式出现问题)。当然,这不是一个真正好的解决方案,因为它使用 basic_* 类型,但它是摆脱(无害)错误的解决方案。"官方"类型(如ostringstream
)的类型定义在标头<iosfwd>
中向前声明。 当我在标准包含文件之后的代码中包含 typedef(在全局命名空间中)时:
typedef std::basic_ostringstream<char> ostringstream;
并使用这种类型的ostringstream
而不是std::ostringstream
,错误也会消失。所以问题是由标准头文件<iosfwd>
中的前向声明引起的(这并不意味着这些头文件是错误的,只是 eclipse 扫描程序对此感到困惑)。
我正在使用 g++ (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609顺便说一句。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 枚举环境变量的惯用C++14/C++17方法
- 初始化具有非默认构造函数的std::数组项的更好方法