首页 > 解决方案 > do while循环和getline的问题-c ++

问题描述

我在这部分遇到困难,每当我解决一个问题时,似乎总会有另一个不同的问题。最初的问题是,每当我输入 Y 或 y 循环整个内容时,它都会跳过第一个输入,即Enter your name: 并转到Enter your address: . 为了阻止这种情况,我尝试将其放在cin >> name上面getline(cin,name),但它确实引入了一个新问题,它将替换字符串的第一个单词。有没有办法解决第一个输入的跳过和第一个单词的替换问题?

do {

        cout << "Day: " << days << "\n\n";
        days++;

        cout << "Enter your name: " << endl;
        cin >> name;
        cin.ignore();
        getline(cin, name);
        data.setName(name);

        cout << data.getName() << "\n" << endl;

        cout << "Enter your address: " << endl;
        cin >> address;
        cin.ignore();
        getline(cin, address);
        data.setAddress(address);

        cout << data.getAddress() << "\n" << endl;

        cout << "Enter your email: " << endl;
        cin >> email;
        cin.ignore();
        getline(cin, email);
        data.setEmail(email);

        cout << data.getEmail() << "\n" << endl;

cout << "Press Y/y to continue to enter customer data. Otherwise press N/n to go to next day" << endl;
        cin >> c;
        cout << "\n" << endl;
    } while ((c == 'Y' || c == 'y'));
    

    return 0;
};

例如,如果我输入ab c d名称,我得到的输出只会输出c d. 因此,虽然它很有帮助,但并没有解决它跳过第一个单词的问题。我想要的输出是它显示输入的字符串,在这个例子中它会显示ab c d

标签: c++do-whilegetline

解决方案


推荐阅读