【问题标题】:Code in C++ is skipping over my second string cin input [duplicate]C++ 中的代码跳过了我的第二个字符串 cin 输入 [重复]
【发布时间】:2021-05-05 23:14:22
【问题描述】:

我在代码中输入第二个字符串时遇到了一些问题。当我第一次这样做时它可以工作,但是,当我第二次这样做时,它会完全跳过它。我第二次复制了代码,但我只是更改了上面的变量名。有什么想法吗?

第一次很好用

string runnerName1;
string runnerName2;

double runTime1 = 0;
double runTime2 = 0;

cout << "First Runner's Name: ";
getline(cin, runnerName1); 
cout << endl;

cout << "Finishing Time: ";
cin >> runTime1;
cout << endl;

然后我添加两个空格并再次执行此操作。但是,它会跳过第二个名字的跑步者姓名字符串输入,直接进入结束时间

cout << "Second Runner's Name: ";
getline(cin, runnerName2);
cout << endl;

cout << "Finishing Time: ";
cin >> runTime2;

【问题讨论】:

    标签: c++ string c++11 cin getline


    【解决方案1】:

    getline() 不会被编译器忽略。

    它仍在执行并正在读取 Enter 作为输入。

    int main() {
        std::string runnerName1;
        std::string runnerName2;
    
        double runTime1 = 0;
        double runTime2 = 0;
    
        std::cout << "First Runner's Name: ";
        std::cin, runnerName1; 
        std::cout << runnerName1 << std::endl;
    
        std::cout << "Finishing Time1: ";
        std::cin >> runTime1;
        std::cout << runnerName1 << " - " << runTime1  << std::endl;
    
        std::cout << "Second Runner's Name: ";
        std::cin >> runnerName2; 
        std::cout << runnerName2 << std::endl;
    
        std::cout << "Finishing Time2: ";
        std::cin >> runTime2; 
        std::cout << runnerName2 << " - " << runTime2  << std::endl;
    
    }
    

    其他方式,

    std::cin.ignore() (它将丢弃下一个可用字符,因此 换行不再碍事。)

    int main() {
        std::string runnerName1;
        std::string runnerName2;
    
        double runTime1 = 0;
        double runTime2 = 0;
    
        std::cout << "First Runner's Name: ";
        getline(std::cin.ignore(), runnerName1);  // cin.ignore()
    
        std::cout << "Finishing Time1: ";
        std::cin >> runTime1;
        std::cout << runnerName1 << " - " << runTime1  << std::endl;
    
        std::cout << "Second Runner's Name: ";
        getline(std::cin.ignore(), runnerName2); 
    
        std::cout << "Finishing Time2: ";
        std::cin >> runTime2; 
        std::cout << runnerName2 << " - " << runTime2  << std::endl;
    }
    

    例如:Code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多