使用默认的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()
相关的错误
我在Eclipse中有CDT GCC Built-in Compiler Settings
并且未选中使用带有标志的全局提供程序:
"${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}"
我也尝试来回更换工具链但没有运气。
答案 0 :(得分:1)
问题以某种方式由g ++头文件的结构引起。在标题<sstream>
中,只有&#39;基本&#39;模板类已定义。调用ostringstream
方法时,我遇到与str()
相同的错误。
当我将代码中的变量类型更改为std::basic_ostringstream<char>
时,错误就消失了。此外,自动完成工作再次起作用(之前没有工作,这是eclipse扫描仪在某种程度上遇到问题的一个好兆头)。当然这不是一个真正好的解决方案,因为它使用basic_ *类型,但它是一个摆脱(无害)错误。 &#39;官方&#39;的typedef类似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 btw。