Delimitoren für operator>>
-
Hallo
Was sind laut Standard die Delimitoren für den Operator:std::istream& std::operator>> (std::istream&, std::string&);Und wie Verhalten sie sich im Bezug auf
std::istream.ios_base::skipws?MfG, EOutOfResources
-
EOutOfResources schrieb:
Hallo
Was sind laut Standard die Delimitoren für den Operator:std::istream& std::operator>> (std::istream&, std::string&);Afaik alles, was vom verwendeten Locale als Whitespace eingestuft wird.
Und wie Verhalten sie sich im Bezug auf
std::istream.ios_base::skipws?Da bin ich mir nicht so sicher (und ein Schnelltest per Ideone brachte auch kein klares Ergebnis).
-

Die Frage ist nicht wirklich ernst gemeint oder?
-
CStoll schrieb:
Afaik alles, was vom verwendeten Locale als Whitespace eingestuft wird.
Ok.
CStoll schrieb:
Da bin ich mir nicht so sicher (und ein Schnelltest per Ideone brachte auch kein klares Ergebnis).
Schade. Ich hätte ein eindeutiges Ergebnis erwartet. Ich werde mal in den WD gucken.
sehr_lustig schrieb:
Die Frage ist nicht wirklich ernst gemeint oder?
Doch...
-
CStoll schrieb:
EOutOfResources schrieb:
Hallo
Was sind laut Standard die Delimitoren für den Operator:std::istream& std::operator>> (std::istream&, std::string&);Afaik alles, was vom verwendeten Locale als Whitespace eingestuft wird.
genau so ist es.
EOutOfResources schrieb:
Und wie Verhalten sie sich im Bezug auf
std::istream.ios_base::skipws?skipws ist per default am istream eingestellt. Das heißt: führende White Space Character werden überlesen. Das Lesen eines string beginnt erst mit dem ersten nicht WS-Character. Mit noskipws werden führende WS-Character nicht mehr überlesen, aber auch nicht eingelesen. Zeigt der Lesezeiger auf ein WS-Character, so wird bei 'noskipws' ein Leerstring gelesen, da dieses Zeichen bereits als 'Delimiter' interpretiert wird.
C++Standard 21.3.7.9 schrieb:
Inserters and extractors
template<class charT, class traits, class Allocator> basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str);1 Effects: Begins by constructing a sentry object k as if k were constructed by typename
basic_istream<charT,traits>::sentry k(is). If bool(k) is true, it calls
str.erase() and then extracts characters from is and appends them to str as if by calling
str.append(1,c). If is.width() is greater than zero, the maximum number n of characters
appended is is.width(); otherwise n is str.max_size(). Characters are extracted and
appended until any of the following occurs:
— n characters are stored;
— end-of-file occurs on the input sequence;
— isspace(c,is.getloc()) is true for the next available input character c.
2 After the last character (if any) is extracted, is.width(0) is called and the sentry object k is
destroyed.Bem.:
basic_istream<charT,traits>::sentry k(is)überliest die führenden WS-Character bei 'skipws' Einstellung.
Gruß
Werner
-
Danke vielmals Werner
.