#include<string>
using namespace std;
int main(){
const int SIZE=50;
int count=0;
ifstream fin("phoneData.txt");
ofstream fout("phoneList.txt");
string firstName, lastName, phoneNumber;
if (!fin){
cout<<"Error opening file. program ending."<<endl;
return 0;
}
while (count<SIZE && fin>>phoneNumber[count]){
fin.ignore();
getline (fin, firstName[count], '\n');
fin>>lastName[count];
count++;
}
return 0;
到目前为止,这是我的代码。在我的while循环中,getline出了问题,我不断收到如下错误信息:
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::ifstream'
1> c:\program files\microsoft visual studio 9.0\vc\include\string(475) : see declaration of 'std::getline'
请帮忙!!!我无法理解!
答案 0 :(得分:1)
getline (fin, firstName[count], '\n');
应该是:
getline(fin, firstName);
还有更多问题。这是一个可能的清理,它对您的输入数据做了一些我无法从您的代码中分辨出来的假设:
#include <iostream>
#include <fstream>
#include <string>
int main(){
using namespace std;
ifstream fin("phoneData.txt");
ofstream fout("phoneList.txt");
if (!(fin && fout)){
clog << "Error opening file. program ending.\n";
return 1;
}
const int SIZE=50;
string firstName, lastName, phoneNumber;
for (int count = 0; count < SIZE; ++count) {
getline(fin, phoneNumber, ' ');
getline(fin, firstName, ' ');
getline(fin, lastName);
if (!fin) {
break;
}
fout << lastName << ", " << firstName << " -- " << phoneNumber << '\n';
}
return 0;
}
输入样本:
123 Marcy Darcy
555-0701 Daneal S.
输出样本:
Darcy, Marcy -- 123
S., Daneal -- 555-0701
答案 1 :(得分:0)
http://www.cplusplus.com/reference/string/getline/
这是getline的签名 istream的&安培; getline(istream&amp; is,string&amp; str,char delim);
就这么做
getline(fin,firstName [count] ,'\ n');
请注意,'\ n'不是必需的。默认情况下它会获得整行。
也许你想申报firstName&amp; co作为载体? std :: vector firstName(SIZE);
在字符串上,operator []获取一个char http://www.cplusplus.com/reference/string/string/operator%5B%5D/
所以fin&gt;&gt; lastName [count]只会将一个char读入lastname。
答案 2 :(得分:0)
一些*流包括怎么样 - 只是为了卫生,即使字符串包含它们
getline(fin,firstName); //应该工作
答案 3 :(得分:0)
firstName和lastName都不是数组,但是你错误地将它们都用作数组类型。
答案 4 :(得分:0)
我认为你在寻找的是
char firstName[1024]
fin.getline (firstName, 1024, '\n')