簡體   English   中英

C ++編譯錯誤

[英]C++ compile error

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

請幫忙!!! 我想不通!

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

http://www.cplusplus.com/reference/string/getline/

這是getline istream&getline的簽名(istream&是,string&str,char delim);

只需執行getline(fin,firstName [count] ,'\\ n');

請注意,“ \\ n”不是必需的。 默認情況下,它獲取整行。

也許您想將firstName&co聲明為向量? std :: vector firstName(SIZE);

對於字符串,operator []獲得一個字符http://www.cplusplus.com/reference/string/string/operator%5B%5D/

因此fin >> lastName [count]會將一個字符讀入姓氏中。

*流包含的內容如何-僅出於衛生考慮,即使字符串包含它們

getline(fin,firstName); // 應該管用

firstName和lastName都不是數組,但是您錯誤地將它們都用作數組類型。

我想你要找的是

char firstName[1024]
fin.getline (firstName, 1024, '\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM