我正在编写电话簿,从文件中读取有问题。 错误是:'运营商>>'不匹配(操作数类型是'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";
}
答案 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);
这将改为读取直到换行符(看起来像你想要的那样)。