Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.12.2008, 21:09

Elemente von einer Liste in Strings speichern

Hallo, ich bins mal wieder und habs mal wieder mit den Strings :)

Ich suche nach einer Möglichkeit einzelne Elemente von einer Liste in einem String zu speichern.
Ich kenne bis jetzt nur die Möglichkeit Bestimmte Elemente, bzw die gesamte Liste durch einen Iterator auszugeben:


C-/C++-Quelltext

1
2
for (it=Highscore.begin(); it!=Highscore.end(); ++it)
                cout << *it << endl;


Aber wie ich das ganze in einem String speichere :?: keine Ahnung (Also nicht die Ganze Liste, sondern nur ein Element in ein String :D)

Hab schon wie immer google etc. gefragt, ohne Erfolg.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

23.12.2008, 21:13

Genauso wie du den cout stream nutzen kannst, kannst du eine instanz von stringstream benutzen. Damit "streamst" du praktisch in einen string hinnein.

http://www.cplusplus.com/reference/iostream/stringstream/

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

3

23.12.2008, 21:56

Ich nehme mal an das Highscore ein std::Vector ist^^
wenn du zb nen std::vector mit integer Elementen hast könntest du doch einfach ein bestimmtes Vectorelement wie vec[iPos] einem String zu weisen..
Oder verstehe ich das Problem wieder mal nicht^^?

4

23.12.2008, 22:02

soweit ich mitbekommen habe will er die Highscores von einem Vector in einen String bekommen, damit er am ende etwas wie

C-/C++-Quelltext

1
std::string foo = "19802\n15270\n14205\n12547"

bekommt. Und das geht ziemlich einfach mit Stringstreams

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

5

23.12.2008, 22:05

Mh warum schreibt er dann das er nur ein Element eines Vectors in einem String packen will .. ach egal^^

Ich denke er will sowas ..

C-/C++-Quelltext

1
std::string mystring = std::vector myvec[iPos] ...

6

23.12.2008, 22:07

Naja... entweder nutzt er jetzt std::stringstream foo << bar; oder std::string foo=bar; also wäre beides schon beantwortet und uns kanns egal sein, was er meint :>

7

23.12.2008, 22:45

Ich denke, mit "Liste" meint er eher std::list.

Wieso eigentlich den Umweg über einen Stream? Man kann ja direkt an den String anhängen.

C-/C++-Quelltext

1
2
3
4
5
std::string MyString;
for (std::list<std::string>::iterator it = Highscore.begin(); it != Highscore.end(); ++it)
{
    MyString.append(*it);
}

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

24.12.2008, 00:14

Ich denke über den Stringstream dürfte es in der Regel performanter sein.
std::string::append müsste nach meinem Kenntnisstand eine Kopie der Strings erzeugen. Im Stringstream spart man sich diese in vielen Fällen so lange die Buffergröße passend gewählt ist.

9

24.12.2008, 00:28

Ich hab schon eine verkettete Liste gemeint, wo ich einzelne Elemente in jeweilige Strings packen will.
Also erstes Element = string1, zweites Element = string2 usw.

Danke für eure Vorschläge. Ich werds morgen mal ausprobieren.

10

24.12.2008, 11:27

Solltest eindeutig std::ostringstream (Header: <sstream>) benutzen. Kannst dann den selben komfort genießen wie bei deiner Ausgabe und brauchst dich nicht groß umgewöhnen.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige