find() Funktion funktioniert nicht
-
Das liegt daran, dass der >>-Operator bis zu dem ersten Leerzeichen einliest.

Versuchs mal so:
#include <iostream> #include <string> // benutze string! using namespace std; int main () { string ausgabe; getline(cin, ausgabe); int pos; pos = ausgabe.find(" " ,0); cout<<pos<<endl; fflush(stdin); getchar(); }btw:
cpp-Tags benutzen!Zu 2:
#include <iostream> int main () { int i = 0; int i2 = 0; std::cout << "2 Zahlen eingeben: "; std::cin >> i >> i2; std::cout << i << ", " << i2; fflush(stdin); getchar(); }
-
#include <iostream> //#include <cstring> C-String? oO #include <string> //using namespace std; int main () { std::string varStr("hier geht der bär ab"); ::size_t pos = varStr.find("geht"); if(pos != std::string::npos) std::cout<< pos; std::cin.get(); }Warum integer? Steht doch direkt in der cpp-reference, dass ein ::size_t zurückgegeben wird...
-
::size_t pos = varStr.find("geht");
kannst du nicht auch mal mit weniger doppelpkt programmieren?
noch dazu, wenn sie falsch sind...
size_tliegt imnamespace std, egal was dein compiler denkt... ich finds zwar auch sinnlos und doof, aber kann man nix machen, wenns so im standard steht - ist ja auch nicht das einzige, was im standard nich so doll ist ;o)
noch dazu wärestd::string::size_typekorrekt (das wird zwar immer ein size_t sein, aber der allocator kann eben auch nen anderen size type nutzen (vll kann er eh nur 2^16 byte adressieren und nimmt deshalb sinnvollerweise uint16 oder was auch immer...)bb
-
n00b42 schrieb:
fflush(stdin); getchar();fflush(stdin)solltest du nicht schreiben, das führt zu undefiniertem Verhalten. Auchgetchar()empfehle ich nicht, weil du C- und C++-Eingabebehandlung mischst. Nimmstd::cin.get(), wie von Kóyaánasqatsi vorgeschlagen.Kóyaánasqatsi schrieb:
Warum integer? Steht doch direkt in der cpp-reference, dass ein ::size_t zurückgegeben wird...
Gewöhn dir bitte ab, immer :: für den globalen Namensraum anzugeben, damit verwirrst du die Leute nur.

size_twäre wenn schon instd...
-
Nexus schrieb:
size_twäre wenn schon instd...Bei mir nicht.

-
Kóyaánasqatsi schrieb:
Nexus schrieb:
size_twäre wenn schon instd...Bei mir nicht.

sicher ist er das bei dir auch - nur vll nimmts dein compiler nicht so genau mit dem standard und bietet ihn zusätzlich auch im globalen scope an - aber selbst dann wär es noch nicht richtig

da kommt mir gerad nen interessanter gedanke:
welchensize_typehatstd::vector<bool>? ^^ ich glaub auch size_t - dabei kann er doch (zumindest theoretisch)sizeof(char)*std::numeric_limits<allocator_type::size_type>::max()allokieren?!bb
-
Bei mir ist im std-Scope nichts von size_t zu finden.
-
Kóyaánasqatsi schrieb:
Bei mir ist im std-Scope nichts von size_t zu finden.
Wo hast du gesucht? Bei IntelliSense? Darauf solltest du dich nicht verlassen.
size_tist ein Typ der C-Standardbibliothek und wurde mit C++ in den Header<cstddef>verfrachtet und instdeingepackt.
-
Jo, IntelliSense war Schuld. Habe das Gefühl, dass das bei VS ziemlich verbuggt ist.
-
Danke für die schnellen Antworten. Hätte gar nicht gedacht, dass meine Frage gleich so ein breites Echo haben würde
.
-
n00b42 schrieb:
Danke für die schnellen Antworten. Hätte gar nicht gedacht, dass meine Frage gleich so ein breites Echo haben würde
.Jopp - das lag aber eher an K. als an deiner Frage^^
PS:
Kóyaánasqatsi schrieb:
Jo, IntelliSense war Schuld. Habe das Gefühl, dass das bei VS ziemlich verbuggt ist.
so was guckt man ja auch im standard und nicht in der IDE nach... Intellisense zeigt zwar trotzdem vieles aus der standard-lib nicht an, aber die Fehler dort haben mich bisher nur extrem selten gestört...
bb
-
unskilled schrieb:
so was guckt man ja auch im standard und nicht in der IDE nach... Intellisense zeigt zwar trotzdem vieles aus der standard-lib nicht an, aber die Fehler dort haben mich bisher nur extrem selten gestört...
Das Problem liegt darin, dass die Standardbibliothek des MSVC++ C-Typen wie
size_tglobal definiert und perusingin denstd-Namensraum zieht. IntelliSense scheintusingnicht zu berücksichtigen.Abgesehen von gelegentlichen Ausfällen gefällt mir IntelliSense nicht schlecht. Allerdings sollte man es nicht als Massstab für den C++-Standard nehmen.
-
Nexus schrieb:
unskilled schrieb:
so was guckt man ja auch im standard und nicht in der IDE nach... Intellisense zeigt zwar trotzdem vieles aus der standard-lib nicht an, aber die Fehler dort haben mich bisher nur extrem selten gestört...
Das Problem liegt darin, dass die Standardbibliothek des MSVC++ C-Typen wie
size_tglobal definiert und perusingin denstd-Namensraum zieht. IntelliSense scheintusingnicht zu berücksichtigen.dein Intellisense kennt size_t? meins nicht - wird daran liegen, dass es auch nirgendwo definiert wird

aber ja, leider scheint intellisense using nicht verstehen zu können
Nexus schrieb:
Abgesehen von gelegentlichen Ausfällen gefällt mir IntelliSense nicht schlecht. Allerdings sollte man es nicht als Massstab für den C++-Standard nehmen.
wollt ich damit auch sagen.
bb