Getline在我的while循环中跳过第一行? (C ++)

时间:2016-10-02 04:05:34

标签: c++

相当简单的问题。下面是我的代码,我试图读取文本文件中每一行的第一个单词。我几乎是C ++的新手,基本上是文盲,所以生动的解释会非常有用。提前谢谢!

我想要的输出是:

战士(5次),状态,战斗(5次),状态(当然是单独的行)

但我得到的是:

战士(4次),状态,战斗(5次),状态

这是我的代码:

int main() {
    string readText;
    string command;
    string firstName;
    string skip;
    int strength;
    ifstream inFile("warriors.txt");
    if (!inFile) {
        cout << "File will not open" << endl;
    }
    else {
        while (inFile >> readText) {
            getline(inFile, command);
            inFile >> command;
            if (command == "Warrior") {
                cout << "warrior" << endl;
            }
            else if (command == "Battle") {
                cout << "battle" << endl;
            }
            else if (command == "Status") {
                cout << "status" << endl;
            }
        }
    }
}

另一个问题是,为什么当我改变时:

    while(inFile >> readText)

    while(inFile)

我的输出现在是: 战士(4次),状态,战斗(5次),状态,状态

1 个答案:

答案 0 :(得分:0)

您使用(inFile&gt;&gt;)和getline()在一个循环中读取多行。你的while循环应该看起来像

while (inFile >> command){
  cout << command << endl;  
}