难以阅读由空格分隔的行 C++

问题描述 投票:0回答:1

我需要用 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] != ' ')”吗?那是行不通的。

c++
1个回答
0
投票

而不是

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
© www.soinside.com 2019 - 2024. All rights reserved.