Anzeige:
Ergebnis 1 bis 5 von 5

Thema: cin

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    61

    cin

    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?

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Es gibt einen Überlaufschutz,aber man muß ihn auch anschalten
    Code:
    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)
    Code:
    char buf[100];
    cin.getline(buf,100,'\n');

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    61
    Aja ist ja einfach ok dann nehm ich das halt mal
    Danke

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du kannst auch einen beliebig langen String einlesen, wenn du als Variablentyp std::string benutzt

    Code:
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    string line;
    getline(cin, line);
    line enthält dann die gesamte Eingabe bis zum ENTER.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Original geschrieben von wraith
    Es gibt einen Überlaufschutz,aber man muß ihn auch anschalten
    Code:
    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)
    Code:
    char buf[100];
    cin.getline(buf,100,'\n');
    Also das C++ Buch, welches ich grade durchacker, gibt dazu folgendes an
    Code:
        const int _max = 100;
        char zeile[_max];
        cin.getline(zeile, _max);
    Scheint als sein das Buch wirklich gut

    Cu
    André
    C und C++

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •