我需要用 C++ 读取一个文件到我的模拟中,该文件必须采用以下格式:
# Comments
# Comments
nameOfTheMarket
timeOfSimulation
averageTime
numberOfCashiers
cashierName1 quality1 salary1
cashierName2 quality2 salary2
- - -
cashierNameN qualityN salaryN
#End
这是我第一次处理文件,但我正在阅读并尝试这样做:
int main ()
{
string marketName, cashierName;
int counter = 0;
int counter2 = 0;
int simulationTime,averageTime, numberOfCashiers;
string info, test;
ifstream input("/home/meucomputador/workspace/Testezin/src/naocompre.dat");
if(input.is_open()) {
while(!input.eof()) {
getline(input,info);
cout<<info<<endl;
if(info[0] != '#') {
counter++;
}
switch(counter) {
case 1:
marketName = info;
break;
case 2:
stringstream(info) >> simulationTime;
break;
case 3:
stringstream(info) >> averageTime;
break;
case 4:
stringstream(info) >> numberOfCashiers;
break;
default:
//how to read the 3 information at the same line?
for(int i = 0; i < info.length(); i++) {
while(info[i] != ' ')
counter2++;
}
cashierName = info.substr(0,counter2+1);
}
}
}
return 0;
};
我的困难在于读取收银员的姓名、素质和工资。我真的需要使用“while(info[i] != ' ')”吗?那是行不通的。
而不是
info.length()
在循环中使用 stoi(numberOfCashiers)
使用 getline 读取下一行
当你分割字符串时,有很多方法可以做到这一点,例如
std::istringstream is(input);
std::string cashiername;
int quality=0; // not sure about the data type you need.
int salary=0;
is >> cashiername >> quality >> salary