2016-07-17 8 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); 
    } 

Dies funktioniert aber wenn ich dies tun:Mit cin.getline mit Zeichenfolge erklärt

int main() { 
string line,line2,dude; 

Es gibt mir einen Fehler. [Fehler] keine passende Funktion für den Aufruf von 'std :: basic_istream :: getline (std :: string &, int)' WARUM?

+2

* "WARUM?" * Nun, weil es keine Überladung von 'getline()' gibt, die eine 'string' und eine' int' braucht. Welchen Teil der Fehlermeldung finden Sie unklar? –

+1

Es gibt mehr Fehler in Ihrem Code, wie: 'while (! Myfile.eof())'. –

Antwort

2
  • std::cin.getline() erwartet ein char* Puffer (docs)
  • std::getline() ein std::string Puffer (docs)

erwartet Wenn Sie die Art ändern, müssen Sie ändern, welche Sie Anruffunktion, auch.

1

char buf[20] ist keine Zeichenfolge, es ist ein Zeichenarray. Wenn Sie das Array mit einem '\ 0' Byte beenden, kann es sich um eine C-Zeichenfolge handeln. Immer noch kein std::string, obwohl.

Die Funktion cin.getline() erwartet zwei Parameter: einen Zeiger auf ein Array von Zeichen und eine Zählung, wie viele Zeichen der Puffer unterstützt - er füllt ihn dann mit einem C-String von cin.

Es gibt keine Variante von cin.getline(), die eine std :: string unterstützt. Dafür müssen Sie std::getline(iostream, string), z.

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