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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

21

30.03.2007, 07:43

Nein! :shock:
@D13_Dreinig

22

30.03.2007, 18:25

natürlich kann man stringvariablen einlesen ^^ macht man aber ein wenig anderes ...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
bool write_string(const std::string& string, const std::string& filename)
{
    std::ofstream file_stream(filename.c_str(), std::ios::out | std::ios::binary);
    if (!file_stream)
        return false;

    size_t string_len = string.length();
    file_stream.write(reinterpret_cast<char*>(&string_len), sizeof(size_t)); // Länge des Strings speichern

    file_stream.write(string.c_str(), static_cast<std::streamsize>(string_len)); // const wegcasten und String in Datei schreiben

    file_stream.close();
    return true;
}
so in etwa müsste das gehen ...

und lesen würde man dann in etwa so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool read_string(const std::string& filename, std::string& string)
{
    std::ifstream file_stream(filename.c_str(), std::ios::in | std::ios::binary);
    if (!file_stream)
        return false;

    size_t string_len = 0; // mit 0 initialisieren

    file_stream.read(reinterpret_cast<char*>(&string_len), sizeof(size_t)); // Stringlänge auslesen

    char* temp_array = new char[string_len + 1]; // array in dieser Größe anlegen

    file_stream.read(temp_array, static_cast<std::streamsize>(string_len));  // String in temp_array lesen

    file_stream.close(); 
    temp_array[string_len] = 0; // string.c_str() ist meine ich nicht nullterminiert. Auf jedenfall mal terminieren.

    string = temp_array; 
    delete [] temp_array; // WICHTIG! Immer freigeben.


    return true;
}
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

R3sident3vil

Treue Seele

  • »R3sident3vil« ist der Autor dieses Themas

Beiträge: 177

Wohnort: 1010010

Beruf: Selbstständig

  • Private Nachricht senden

23

30.03.2007, 18:59

sieht ganz schön kompliziert aus :shock:
Kaum ist Linux wieder da, schon gehts meinem Rechner wunderbar, denn Linux ist die beste Medezin.

Olischewsky Arts

24

30.03.2007, 19:36

Nope ist eigentlich ganz einfach ... das Problem ist bei der Sache halt nur das du ne dynamische Stringlänge hast. Deswegen wird erstmal die Länge gespeichert.

Aber habs mal kommentiert.
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

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

25

31.03.2007, 00:20

Zitat von »"Deviloper"«


C-/C++-Quelltext

1
2
    file_stream.write(const_cast<char*>(string.c_str()), static_cast<std::streamsize>(string_len)); // const wegcasten und String in Datei schreiben

}


Ist wirklich nicht grad sinnvoll, hier das const aufzulösen...
einfach

C-/C++-Quelltext

1
    file_stream.write(reinterpret_cast<const char*>(string.c_str()), static_cast<std::streamsize>(string_len))

26

31.03.2007, 09:39

hmm @grek40 ... ist nicht sinnvoll nen const char* in nen const char* zu casten ;)
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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

27

31.03.2007, 11:33

Zitat von »"Deviloper"«

hmm @grek40 ... ist nicht sinnvoll nen const char* in nen const char* zu casten ;)


Also, warum überhaupt casten?
@D13_Dreinig

28

31.03.2007, 11:36

ja stimmt ... hab mich da etwas vertan ... irgendwann hatte ich mal sowas ähnliches und da hat der Compiler gemeckert ... naja ich pass es oben im Code an ... sorry.
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

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

29

31.03.2007, 11:43

hehe... ich hatte weil du oben gecastet hattest überhaupt erst die dumme Idee, dass man den Cast ändern müsste - liegt daran, dass ich fast immer mit wstring arbeite ;)

Werbeanzeige