PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cin



sven1978
06-07-2003, 11:06
Ich fange gerade mit c++ programmierung an und habe aber schon erfahrung mit c.
jetzt stelle ich fest das man bei einlesen eines strings mit cin gar keinen ueberlauf schutz hat.Muss ich mich jetzt da wie bei c absichern?Gibt es da eine moeglichkeit cin einen uberlaufschutz mitzugeben?Zum Beispiel die groesse des Strings?

Oder soll ich da am besten gleich mit fgets arbeiten?

wraith
06-07-2003, 11:26
Es gibt einen Überlaufschutz,aber man muß ihn auch anschalten ;)


char buf[100];
cin.width(100);
cin >> buf;

(99% aller C++ Programmierer kennen diesen 'Trick' nicht).

cin liest bis zu einem Whitespacezeichen,oder oben wenn 99 Zeichen im Buffer.
Du kannst auch einen Zeile einlesen (mit Whitespace)


char buf[100];
cin.getline(buf,100,'\n');

sven1978
06-07-2003, 11:46
Aja ist ja einfach ok dann nehm ich das halt mal
Danke

anda_skoa
06-07-2003, 20:55
Du kannst auch einen beliebig langen String einlesen, wenn du als Variablentyp std::string benutzt



#include <string>
#include <iostream>

using namespace std;

string line;
getline(cin, line);


line enthält dann die gesamte Eingabe bis zum ENTER.

Ciao,
_

Berufspenner
09-07-2003, 15:49
Original geschrieben von wraith
Es gibt einen Überlaufschutz,aber man muß ihn auch anschalten ;)


char buf[100];
cin.width(100);
cin >> buf;

(99% aller C++ Programmierer kennen diesen 'Trick' nicht).

cin liest bis zu einem Whitespacezeichen,oder oben wenn 99 Zeichen im Buffer.
Du kannst auch einen Zeile einlesen (mit Whitespace)


char buf[100];
cin.getline(buf,100,'\n');
Also das C++ Buch, welches ich grade durchacker, gibt dazu folgendes an
const int _max = 100;
char zeile[_max];
cin.getline(zeile, _max); Scheint als sein das Buch wirklich gut ;)

Cu
André