Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » string problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.03.2006, 20:27 Uhr
Karldin Shinowa
Professional Noob


ich habe ein problem mit der funktion getline(). und zwar: ich möchte eine Zeile einlesen und in einem string der headerdatei <string> speichern, die deklaration von getline ist:

C++:
istream& getline (char *pBuffer, int noOfChars, char del = '\n');



schön und gut ein string in ein cstring umwandeln geht ja bekanntlich mit string.c_str()(->const char*). allerdings nimmt getline nur ein char*. wie mach ich das jetzt also so funktionierts ja nicht:


C++:
cout<<"Dateiname:";
cin.getline(filename,50);

//bzw

cout<<"Dateiname:";
cin.getline(filename.c_str(),50);//ka ob das c_str hier was bringt



muss ich dass const mit const_cast noch wegcasten. wenn ja wie?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 07.03.2006 um 21:21 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.03.2006, 20:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
getline(cin, filename);



sollte funktionieren
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.03.2006, 21:14 Uhr
Pler
Einer von Vielen
(Operator)


Das Problem ist, dass du getline als Methode des Objekt aufrufst.
In diesem Fall will getline einen Zeiger haben, hinter dem bereits genügend Speicher steht.


Code:
cin.getline(filename.c_str(),50);


Kann also gar nicht funktionieren. (Kein Speicher hinter dem Zeiger)


Code:
cin.getline(filename,50);


Funktioniet auch nicht, da das nicht der erwartete char* ist.


Code:
getline(cin, filename);


Sollte wie gesagt funktionieren. Hier wird die Klassenmethode aufgerufen. Diese erwartet ein string-Objekt bei welchem Dann automatisch für genügend Speicher gesorgt wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: