C ++编译错误

时间:2009-11-16 23:06:40

标签: c++

#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'

请帮忙!!!我无法理解!

5 个答案:

答案 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')