用C++将带空格的字符串输入到istream对象中

问题描述

我重载了 >> 运算符,允许用户键盘输入,这样他们就可以创建狗的配置文件。我输入狗的年龄和名字没有问题,因为这些变量中没有空格,但是如果我想输入品种 "German Shepherd",字符串中有空格。我为此寻找了解决方案,我找到的所有答案都是使用 std::getline(),但是当我使用 getline() 时,它会跳过品种的输入并转到下一个输入。

这是我所有的代码和我得到的输出

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

class dog
{
    int age;
    string breed;
    string name;

public:

    friend istream &operator >>(istream &inputobject,dog &dogObject);
};

istream &operator >>(istream &inputobject,dog &dogObject)
{
    cout<<"Please enter dogs age:";
    inputobject>>dogObject.age;
    cout<<"Enter the breed of the dog:";
    getline(inputobject,dogObject.breed);
    cout<<"Please enter dogs name:";
    inputobject>>dogObject.name;
}

int main()
{
    dog dog1;
    cout<<"Enter dogs information\n";
    cin>>dog1;
}

输入数据:

5
German Shephard
Butch

终端输出

Enter dogs information
Please enter dogs age:5
Enter the breed of the dog:Please enter dogs name:Butch

如何使用单词之间的空格为成员变量 "German Shepherd" 输入字符串 breed

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)