C ++:预期的主表达式

时间:2019-12-10 04:35:48

标签: c++

我一直在努力解决某些对我来说没有意义的错误。每当我尝试编译该程序时,它就会告诉我,当我不在时,我会错过分号。

错误似乎与特定的代码块有关,即检查库存的if语句。由于我知道c ++可能是特定于平台的,因此我正在运行debian 9和atom ide(如果有帮助的话)。

这是特定错误:

  

错误:“,”令牌之前的预期主表达式

     

getline(string,line); //获取字符串`

和代码:

#include <iostream>
#include <fstream>


using namespace std;

int main ()
{
    cout << "store stocking system: \n"; // yadda yadda yadda UX
    cout << "commands: \n";
    cout << "  help: shows available commands\n  check stock: checks store stock\n  enter stock: enter new stock items\n";
    cout << "  exit: terminates the program\n  clean house: deletes all stock\n";
    home: // main loop in program
    string output;
    output = ">> ";
    cout << output;


    string stock;
    string item; // this whole block just defines things and gets input
    int itemNumber;
    string userInput;
    getline(cin,userInput);

    if (userInput == "exit")
    {
      return 0;
    }

    if (userInput == "enter stock")
    { // enters new stock
      cout << "enter item\n>> "; //item name
      cin >> item;
      cout << "enter amount\n>> "; //amount of item
      cin >> itemNumber;
      ofstream myfile; //makes file
      myfile.open("stock.txt"); //opens myfile
      myfile << "\n" << item << "," << itemNumber << "\n"; //writes to file
      myfile.close();// closes file
      cout << "done";
      goto home; //finishes and goes to main loop
    }

    if (userInput == "check stock") // where the problem is
    {
      string line;
      ifstream file("stock.txt");//checks fo file
      file.open("stock.txt");//opens file
      getline(string,line);//gets string
      file.close();//closes it
      cout << line << "\n";
      goto home;
    }

    if (userInput == ""){
      goto home;
    }

    else
    {
      cout << "\033[1;31mplease use a proper command:\033[0m\n";
      goto home;

    }
    return 0;
}    

3 个答案:

答案 0 :(得分:0)

您有没有想念这个?

#include <string>

答案 1 :(得分:0)

我认为只需将其设为getline(file,line)而不是getline(string,line),然后对您进行排序。

答案 2 :(得分:0)

string被识别为类型std::string的类型名称,您已在行using namespace std;中大体公开了该类型名称。此特定错误消息是由于string不是可以求值的表达式引起的。在您的代码上下文中,应该为

getline(file,line);

PS。标准会说您必须包括<string>标头才能使用组件std::string。由于实现定义的功能,您的代码得以编译,该功能是在此标头版本中与<iostream>一起导入的。