[英]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.