C ++入门第5章第3章练习3.3

时间:2018-01-18 07:51:36

标签: c++ c++11

它需要解释std::stringstd::getline如何分别处理空白字符。我运行解决方案提供的代码,但没有得到预期的结果。

以下是代码:

#include "stdafx.h"

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string word, line;
    cout << "choose:1 string,2 getline" << endl;
    char ch;
    cin >> ch;
    if (ch == '1') {
        cout << "Please input:Welcome to C++family!" << endl;
        cin >> word;
        cout << "Effective string:" << word << endl;
        return 0;
    }
    cin.clear();
    cin.sync();
    if (ch == '2') {
        cout << "Please input:Welcome to C++family!" << endl;
        getline(cin, line);
        cout << "Effective string:" << endl;
        cout << line << endl;
        return 0;
    }
    cout << "Error!" << endl;
    return -1;
}

当我输入&#34; 1&#34;结果没有问题。但是当我输入&#34; 2&#34;时,它不会让我输入并显示为下划线:

2
Please input :Welcome to C++family!
Effective string:
Enter any key to continue......

我无法理解为什么它会像这样运行,错误是什么 请帮帮我,谢谢。

0 个答案:

没有答案