我一直在努力解决某些对我来说没有意义的错误。每当我尝试编译该程序时,它就会告诉我,当我不在时,我会错过分号。
错误似乎与特定的代码块有关,即检查库存的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;
}
答案 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>
一起导入的。