【问题标题】:Stringstream compile error after including header包含标头后的Stringstream编译错误
【发布时间】:2015-03-23 16:01:40
【问题描述】:

我正在尝试使用字符串流来读取字符串并将其转换为各种其他数据类型。但是,我不断收到错误消息“不允许使用不完整的数据类型。”

我对这个错误的研究恰好发现了两个修复:确保包含标题,并使用 std::stringstream 而不是 stringstream。这些修复都没有帮助我。有什么想法吗?

#include <sstream>

bool Arena::addFighter(string info){
    std::stringstream ss;
    ss.getline(info);
    ...
}

编辑:getline() 不是问题。当我尝试声明 ss 对象时,代码会抛出错误。

【问题讨论】:

  • 请提供完整的错误信息。
  • 智能感知:不允许不完整的数据类型。再加上来自 sstream 文件本身的一大堆错误。

标签: c++ stringstream


【解决方案1】:

改变这个

ss.getline(info);

到这里

getline(ss, info);

查看this 问题以了解如何使用getline()。在下次询问之前还要检查ref。 :)

我得到的错误是这样的:

error: no matching function for call to ‘std::basic_stringstream<char>::getline(std::string&)’
     ss.getline(info);

如果您没有使用命名空间 std,那么您应该将 std::string 作为参数传递,而不仅仅是 string

【讨论】:

  • 这并没有改变我的代码中的任何内容。错误发生在 ss 对象的声明中。
  • 我正在使用命名空间标准。我把它放在字符串流前面的原因是因为这是给其他一些人得到同样错误的答案。它根本没有帮助我的代码。
  • 然后@Michael,你应该发布更多代码,一个最小的例子。
  • 我自己解决了问题。在包含 之前,我包含了一个定义类的标头。在那个标题中,我忘记了最后的分号。 (错误信息隐藏在一大堆其他东西中。)因此,我的构建实际上并不包含 。谢谢大家的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
相关资源
最近更新 更多