【问题标题】:c++ Error in tokenizer ''variable 'std::stringstream mystream' has initializer but incomplete type''标记器''变量'std :: stringstream mystream'中的c ++错误具有初始化器但类型不完整''
【发布时间】:2017-03-29 10:40:22
【问题描述】:

我是 C++ 新手,我正在尝试从带有数字的文件中读取行,将行标记为字符串数组并将这些数组项转换为双精度数字。但是在标记化的过程中,我得到了这个错误''变量'std :: stringstream mystream'有初始化程序但类型不完整''。我看过其他人的建议,我想在不使用 boost 的情况下做到这一点,其余代码看起来很像我的,但由于某种原因我得到了这个错误。这是代码。

#include <stdio.h>
#include <string.h>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

int main ()
{
    vector<string> tokens;
    string phrase="sdfs sdfs trt we rw";
    stringstream mystream (phrase);
    string temp;

    while(getline(mystream,temp,' ')){
        tokens.push_back(temp);
    }
}

如果能就这个问题获得一些反馈,那就太好了。提前致谢。

【问题讨论】:

标签: c++ c++11 tokenize


【解决方案1】:

我想你忘了

#include <sstream>

在您的标题中。

【讨论】:

    【解决方案2】:

    "变量 'foo bar' 有初始化器但类型不完整"

    这个错误意味着变量bar的使用方式必须是完整的类型(foo)。仅声明但未定义的类型是不完整的。因此,要使foo 完整,您必须包含foo 的定义。

    在您的情况下,foostd::stringstream。你还没有包含std::stringstream 的定义,所以它不是一个完整的类型。事实上,甚至可能无法保证它已被声明 - 它只是碰巧已被其他标头之一声明。

    解决方案:包括定义std::stringstream 的标头。您可以在标准中找到所有标题及其定义的类型,该标准可作为免费在线草稿获得。但是,如果您不介意二手规范,您可能会发现社区维护的 c++ 参考网站更易于访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多