char str[255] mit vectortest.push_back[str] in vector<std::string> speichern
-
Hallo,
kann mir jemand sagen ob ich den
char str[255]in einen
vector<std::string> vectortestschreiben kann.
Mein Code + Fehlermeldung (die ich nicht ganz verstehe):vector<string> vector_test; char str[255]; printf(str, "%d %c %d = %d\n", x, c, y, x + y); vector_test.push_back[str]; error C3867: "std::vector<_Ty>::push_back": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&std::vector<_Ty>::push_back", um einen Zeiger auf den Member zu erstellen.Was ist mit Argumentenliste gemeint?
Gruß,
ActiveO2
-
vector_test.push_back(str);Nimm runden statt eckige Klammern.
-
vector_test.push_back(str);solltest du mal mit runden klammern versuchen das is doch eine Funktion, oder is das ein schreibfehler hier im Thread?
-
Oh ja, schreibfehler

danke euch
-
Hm ich bins nochmal,
wenn ich nun die Werte des vectors ausgeben will, wird mir 'NULL' wiedergegeben:
vector<string> vector_test; char str[255]; str[0] = '\0' //hab ich vorhin noch vergessen, ei wusst ich davor auch noch nicht for(int i = 0; i<5;i++) { printf(str, "%d %c %d = %d\n", x, c, y, x + y); vector_test.push_back(str); } for(unsigned int i = 0; i < vector_test.size(); i++) { printf("%s\n", vector_test[i]); }Ausgabe:
NULL NULL NULL NULLGruß
-
doppelPost sri:
NULL steht drin weil ich
str[0] = '\0';setze oder?
Aber mache ich dies nicht, wird das ganze Array mit Sonderzeichen gefüllt
und das möchte ich natürlich nicht.Soweit das richtig ist was ich sage, wisst ihr Alternativen?
-
Ich nehme an Du möchtest str formatieren. Dann musst Du auch sprintf nehmen.
Nicht printf.Besser würdest Du allerdinsg std::cout nehmen.
(Oder Boost Format bzw. Fast Format).
Simon
-
Das Problem ist halt, dass meine char-Elemente, denen ich nicht direkt einen char zuweise, ein Sonderzeichen beinhalten.
sobald ich den char[] dann ausgeben will wird mein Bildschirm, nach der geplanten Ausgabe, mit den ganzen Sonderzeichen zugespamt.also Beispiel:
char test[5]; test[0]='a'; test[1])'b'; for(int i = 0; i < sizeof(test); i++) { printf("%s\n", test[i]); }Ausgabe:
a b Í Í Ímit cout kommen Fehlermeldungen; bin deshalb auf printf umgestiegen.
error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::basic_string<_Elem,_Traits,_Ax>' akzeptiert (oder keine geeignete Konvertierung möglich)
...sprintf(str, "%d %c %d = %d\n", x, c, y, x + y);=gleiches Ergebnis
-
Du musst nach 'a' und 'b' dein String noch mit '\0' abschliessen.
Sonst weiss printf nicht wie lange dein String ist.Edit
Zeig mal deine Code mit den iostreams (std::cout). Das sollte alles gehen..Simon
-
//Meine #include's #include "stdafx.h" #include <iostream> #include "stdlib.h" #include "time.h" #include <vector> #include "conio.h" ... for(int i = 0; i<Eingabe;i++) { sprintf(str, "%d %c %d = %d", fst, ze, sec, fst - sec); string test = str; //der String-Inhalt stimmt hier!! vector_test.push_back(test); } cout << "Inhalt anzeigen?(Y|N)" << endl; char c = _getch(); if( c == 'y' || c == 'Y') { for(unsigned int i = 0; i < vector_test.size(); i++) { printf("%s\n", vector_test[i]); /*cout << vector_test[i] << endl;*/ } }
-
using namespace std; //ist auch dabeiPS: morgen bin ich registriert! ^^
-
printf("%s\n", vector_test[i]);Das geht nicht, wenn schon, dann so:
printf("%s\n", vector_test[i].c_str());
-
Es funktioniert; danke

Eine kleine Frage hätte ich noch:
int zahl() { int fNum; fNum = 10 + rand() % 100; return fNum; }müsste mir die Funktion nicht eine Zahl zwischen 10 und 100 ausgeben?
wenn ich die Funktion aufrufe werden mir auch Zahlen über 100 ausgegeben.