WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   c++ getline (http://www.wcm.at/forum/showthread.php?t=114079)

dh233 01.11.2003 17:50

c++ getline
 
Ich habe ein Problem beim Aufruf von getline(). Ich habe eine Variable string s deklariert. Nun möchte ich in diese Variable mit der Funktion eine Zeile einlesen. Dabei habe ich die Funktion wie folgt verwendet: getline(cin, s);

Leider funktioniert das jedoch nicht. Sehe im Moment nicht woran das liegen könnte. Weiß jemand Rat??

lg

dh233

Root 01.11.2003 18:33

Der Befehl lautet:

Code:

cin.getline (s, 100);
, wobei 100 die anzahl der zeichen ist, die er einlesen soll. Einfach google fragen ;)

Flink 01.11.2003 23:42

Parameter für Delimiter
 
Code:

#include <string>
#include <iostream>

using namespace std ;

void main()
{
    string s1;
    cout << "Enter a sentence (use <space> as the delimiter):";
    getline(cin,s1, ' ');
    cout << "You entered: " << s1;
}

Prototype:

template<class _E, class _TYPE, class _A> inline
basic_istream<_E, _TYPE>& getline( basic_istream<_E, _TYPE>& Istream,
basic_string<_E, _TYPE, _A>& Xstring,
const _E _D=_TYPE::newline());

Bei 2 Parametern müsste ein Return als Delimiter standardmäßig verwendet werden.

dh233 02.11.2003 10:15

Erstmal Danke.

@ Root:

Ich hab das mit getline(cin, string) aus einem Buch und es funktioniert auch bei einem ganz einfachem Beispiel.

@ Flink:

Hab ich nicht gekannt. Doch das Problem ist, wenn ich getline() verwende und vorher ein cin >> x habe, dann überspringt das Programm die getline()-Anweisung.

Root 02.11.2003 12:04

Aha, man lernt nie aus :) . Danke für die Info!

Flink 03.11.2003 10:38

Zitat:

Original geschrieben von dh233
Hab ich nicht gekannt. Doch das Problem ist, wenn ich getline() verwende und vorher ein cin >> x habe, dann überspringt das Programm die getline()-Anweisung.
istream::getline: Bricht bei Auftreten eines NeueZeile-Zeichens ab, wobei das NeueZeile-Zeichen aus dem Stream entfertn, aber nicht in den Zielstring geschrieben wird.

Kann es sein, dass in deinem Fall zwei NeueZeile-Zeichen hintereinander kommen?
Ev. kannst du mit istream::ignore() ein paar Zeichen dazwischen überlesen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag