代码之家  ›  专栏  ›  技术社区  ›  OpticalMagician

C++读取字符串,后跟两个双精度

  •  0
  • OpticalMagician  · 技术社区  · 8 年前

    当我试图读入一个字符串,然后从一个文件中读入两倍时,我遇到了以下错误:

    错误:没有运算符“>>”匹配这些操作数 操作数类型为:std::ifstream>>标准::字符串

    对于以下代码:

    std::string name;
    double mass(0), radius(0), gravity(0);
    std::ifstream inFile;
    inFile.open("solSystem.txt", std::ios::app);
    inCheck(inFile);
    while (inFile >> name >> radius >> mass)
    {
        someFunction(name, radius, mass);
    }
    inFile.close();
    

    我以前使用过相同的代码 (std::ifstream >> std::string) 然而在这种情况下,输入文件只有字符。

    这是输入文件:

    Sun       6.96e+08    1.989e+30
    Mercury   2.44e+06    3.285e+23
    Venus     6.052e+06   4.867e+24
    Earth     6.371e+06   5.972e+24
    Mars      3.39e+06    6.39e+23
    Jupiter   6.9911e+07  1.898e+27
    Saturn    5.8232e+07  5.683e+26
    Uranus    2.5362e+07  8.681e+25
    Neptune   2.4622e+07  1.024e+26
    Pluto     1.186e+06   1.309e+22
    

    在你回答之前,我正在寻找这个问题的解决方案,是的,但我也想知道为什么我会遇到这个错误,以便将来避免它。

    1 回复  |  直到 8 年前
        1
  •  1
  •   OpticalMagician    8 年前

    因此,任何一个偶然发现这个问题的人都可以找到解决办法。

    1. 检查以确保包含所有需要的头文件
    2. 检查任何自定义标头,看看是否在其中包含其他标头……这可能会导致类似于我的问题