2016-07-17 15 views
-1
#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
string line,line2; 
char dude[20]; 
cin.getline(dude,20); 
fstream myfile ("example.txt",ios::in); 

if(!myfile) 
{ 
    cout<<"Not Found! "; 
    system("pause"); 
} 
while (!myfile.eof()) 
{ 

    getline(myfile,line); 
    cout<<line; 

} 
myfile.close(); 
exit(0); 
    } 

これは動作しますが、私はこれを行う場合は宣言しました。 [std :: basic_istream :: getline(std :: string &、int)への呼び出しで一致する関数がありません ' なぜですか?

+2

*「WHY?」*「文字列」と「int」をとる 'getline()'のオーバーロードがないためです。エラーメッセージのどの部分がわかりにくいですか? –

+1

コードには、while(!myfile.eof())のような欠陥があります。 –

答えて

2
  • std::cin.getline()char*バッファー(docs
  • std::getline()あなたはタイプを変更すると、あなたも、あなたが呼び出す機能どの変更する必要がありstd::stringバッファー(docs

を期待期待しています。

1

char buf[20]は文字列ではありません。文字配列です。 '\ 0'バイトで配列を終了すると、それはC文字列と言えるでしょう。しかし、まだstd::stringではありません。

関数cin.getline()は、文字の配列へのポインタとバッファがサポートする文字の数の2つのパラメータを必要とします。それは、それがcinからのC文字列でそれを設定します。

std :: stringをサポートするcin.getline()の亜種はありません。そのためにはstd::getline(iostream, string)を使用する必要があります。

std::string line; 
std::getline(std::cin, line);