不符合'operator>>' (操作数类型是'std :: basic_istream'和'')

时间:2017-12-30 10:05:37

标签: c++ c++11 c++14

我正在编写电话簿,从文件中读取有问题。       错误是:'运营商>>'不匹配(操作数类型是'std :: basic_istream'和'')[暂停]

此函数用于写入txt文件:

   void PhoneBook::Save(){  while(1)
 {
 ofstream file;
 file.open("test.txt",ios::app);
        file<<contact.first<<endl 
              <<contact.last<<endl
              <<contact.areacode<<endl 
              <<contact.number<<endl
              <<contact.email<<endl
              <<contact.webaddr<<endl 
              <<contact.address;

    }}

和加载功能是:

void PhoneBook::Load()
{
    ifstream file("test.txt");
                                //how i can make it(reading from file)correct?
    if (file.is_open())
    {
        file>>contact.first>>endl     
            >>contact.last>>endl     
                  >>contact.areacode>>endl 
                  >>contact.number>>endl
                  >>contact.email>>endl
                  >>contact.webaddr>>endl 
                  >>contact.address;
    }
    else
        cout<<"error in openening file";

}

2 个答案:

答案 0 :(得分:3)

std::endl用于输出,不用于输入。

operator>>无论如何都会跳过换行符,以及它在输入中看到的任何其他空格。

答案 1 :(得分:0)

正如Bo所说,std::endl用于输出,而不用于输入。你真正想要使用的是std::getline(std::istream, std::string &)。像这样使用它:

std::getline(file, contact.first);
std::getline(file, contact.last);
std::getline(file, contact.the_rest_of_the_strings_in_contact);

这将改为读取直到换行符(看起来像你想要的那样)。