创建一个允许输入空格的读取函数(C ++)

时间:2015-06-15 12:09:28

标签: c++ input

"写一个名为Person的类,代表一个人的姓名和地址。使用string来保存这些元素。添加操作以读取和打印Person对象到您编写的代码。"

注意我还没有到达访问控制部分。

#include <iostream> 
#include <string>

using std::string;

struct Person
    {
        string name_var, address_var;
    };

std::ostream &print(std::ostream&, const Person &);
std::istream &read(std::istream&, Person &);


std::istream &read(std::istream &is, Person &item)
    {
         is >> item.name_var >> item.address_var;
         return is;
    }

std::ostream &print(std::ostream &os, Person &item)
    {
         os << item.name_var << " " << item.address_var;
         return os;
    }  

如果我使用std::cin作为read的第一个参数,我只能读取单个措辞的名称和地址,这不是非常有用。你能以某种方式使用getline吗?

2 个答案:

答案 0 :(得分:3)

您可以使用:

std::getline(is, item.name_var);

您还可以将分隔符char指定为第三个参数

答案 1 :(得分:0)

看一件事:你用了一个空格来分隔姓名和地址。现在,为了知道名称何时结束,您需要使用其他一些分隔符作为名称。另一个分隔符意味着您需要将名称括在例如双引号(“)然后,在读取名称时,获取输入,直到得到第二个分隔符。