因此,我正在尝试从文本文件中读取联系人的姓名,电话号码和地址。
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
#include "stdafx.h"
#include "Person.h"
#include "PhoneBook.h"
void readFromFile(string filename)
{
int n = 0, i;
string temp_name, temp_number, temp_adress, nstr;
ifstream fin(filename.c_str());
getline(fin, nstr);
n = atoi(nstr.c_str());
for (i = 0; i < n; i++)
{
getline(fin, temp_name);
getline(fin, temp_number);
getline(fin, temp_adress);
contactbook->addPerson(temp_name, temp_number, temp_adress);
}
}
main传递文件名。但我不确定为什么会出现此错误:
错误C2780'std :: basic_istream <_Elem,_Traits>&std :: getline(std :: basic_istream <_Elem,_Traits>&,std :: basic_string <_Elem,_Traits,_Alloc>&,const _Elem)':期望3个参数-提供了2个
答案 0 :(得分:0)
我认为您正在使用具有自己的编译器的Visual Studio。 在documentation解释函数string :: getline时有此声明
template<class _E, class _TYPE, class _A> inline
basic_istream<_E, _TYPE>& getline(
basic_istream<_E, _TYPE>& Istream,
basic_string<_E, _TYPE, _A>& Xstring,
const _E _D=_TYPE::newline( )
);
,因此您缺少在您的情况下为'\ n'的参数。 试试这个代码
void readFromFile(string filename)
{
int n = 0, i;
string temp_name, temp_number, temp_adress, nstr;
ifstream fin(filename.c_str());
getline(fin, nstr,'\n');
n = atoi(nstr.c_str());
for (i = 0; i < n; i++)
{
getline(fin, temp_name,'\n');
getline(fin, temp_number,'\n');
getline(fin, temp_adress,'\n');
}
}