Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz kingabo #2669 üzenetére

    A lényeges kifejezés az "initial whitespace". Tehát ettől még ugyanúgy megáll az operator>> a szavak között, mert csak a beolvasás elején lévőket érinti. Ráadásul ahogy a link mondja is, bizonyos esetekben a nem eldobott bevezető szóköz rögtön le is állítja a feldolgozást:

    #include <iostream>
    #include <string>
    using namespace std;
    int main(int, char**)
    {
    string name;
    cin >> noskipws >> name;
    cout << '*' << name << '*' << endl;
    cin >> name;
    cout << '*' << name << '*' << endl;
    cin >> name;
    cout << '*' << name << '*' << endl;
    return 0;
    }
    $ g++ -Wall test.cpp
    $ echo "John Doe" | ./a.out
    *John*
    **
    **

    Itt a feldolgozás a szóközön megállt, mert a noskipws miatt nem dobja el, viszont az operator>> ezen overloadja a szóköznél annak kiolvasása nélkül megáll. Szóval ez így sose megy tovább.

Új hozzászólás Aktív témák