Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » chars eines strings in vector packen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.05.2009, 03:41 Uhr
Suba Esel



Hmm, Brett vorm Kopf...


C++:
std::string test = "asdf";
std::vector<std::string> test2;
for(int i = 0; i < test.size(); ++i)
test2.push_back(test[i]);
}



"invalid conversion from `char' to `const char*'" - wie beheb ich das noch mal?
Einfach "std::string(test[i])" tuts nicht.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.05.2009, 03:51 Uhr
Suba Esel



So gehts:

C++:
test2.push_back("");
test2.back() += test[i];


Aber das ist ja auch Bloedsinn...
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.05.2009, 11:42 Uhr
Kest
saint


Schau dir einfach die Konstruktoren an.

C++:
test2.push_back(std::string(1, test[i]));

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.05.2009, 23:08 Uhr
Suba Esel



Danke!
Wie gesagt - Brett vorm Kopf...
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.06.2009, 01:34 Uhr
Suba Esel



Hm, ans Laufen gebracht habe ich es ja jetzt. Aber ich verstehe immer noch nicht, wie der Fehler zustande kommt...


C++:
test2.push_back(std::string() + test[i]);
test2.push_back("" + test[i])


Das erste klappt, das zweite aber nicht. (Das zeigt irgendwelche Sonderzeichen an.) Was ist der Unterschied zwischen "" und std::string()?


C++:
test2.push_back(std::string(test[i]));


Hier halt der Compilerfehler - aber wieso kann man nicht einfach ein char in einen String umwandeln?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.06.2009, 18:57 Uhr
xXx
Devil


Hm weil ein String nunmal eine Zeichenkette ist, d.h. gibt es einen c-tor, der die Anzahl dieses Zeichens haben will ...
Warum das oben nicht klappt ... ich geh mal davon aus, dass er halt hingeht und test[i] in einen Integer umwandelt, dadurch dann "" (einen const char*-Zeiger) versucht zu verschieben ... und das ergebnis davon dann durch push_back implizit in einen std::string umwandelt. Kann ich dir aber nicht garantieren std::string() erzeugt halt ein String-Objekt und ruft dann damit entsprechend den operator+ auf, der für char definiert ist und d.h. kein implizites casten von test[i] notwendig ist...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.06.2009, 19:21 Uhr
~Suba Esel
Gast


Das macht Sinn, danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: