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

07.08.2007, 18:35

Problem mit Unicode

Hi,

kann mir jemand bei folgendem Problem weiterhelfen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <fstream>

int main()
{
    //Funktioniert:

    std::string OptionsFileName = "options.ini"
    std::ofstream OptionsFile(OptionsFileName.c_str());

    //Funktioniert nicht: (warum?)

    std::wstring WOptionsFileName = L"options.ini"
    std::wofstream WOptionsFile(WOptionsFileName.c_str()); //Error

}

//Compiler:

//Error: keine passende Funktion für Aufruf von »std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::basic_ofstream(const wchar_t*)« 

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

2

07.08.2007, 20:34

probiers mal mit normalen fstreams(aber die unicode variante). das könnte gehen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

07.08.2007, 21:07

Nö, alle stream Varianten erwarten ein const char* als Parameter! Und genau diesen sollte man auch angeben.
@D13_Dreinig

4

07.08.2007, 21:26

Wo ist dann der Sinn?

Wenn ich also chinesiche zeichen verwende muss mein Dateiname aus ASCII zeichen bestehen, ist das richtig?

Das würde den Sinn von Unicode zerstören...

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

5

07.08.2007, 21:34

dann versuchs mal mit nem static_cast. so wie sich das bei david anhört, sollte das gehen.

Socke

6

07.08.2007, 21:38

Das würde keinen Sinn ergeben... dann geht ja jegliche Information verloren und ich könnte auch ganz normale streams verwenden...

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

7

07.08.2007, 21:43

es könnte sehrwohl sinn ergeben, wenn die funktion intern zurückcastet.
Das sie nur const char * akzeptiert, liegt warscheinlich an der ableitungshirarchie der stl.
David wird uns mit sicherheit aus der dunkelheit ins licht führen.


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

07.08.2007, 21:52

Nene, hier wird ein const char* erwartet. Da bringt casten auch nichts! :)
@D13_Dreinig

9

07.08.2007, 22:01

Für mich ergibt das'keinen Sinn, dass const char * erwartet wird... d.h. man kann nie eine Datei dessen namen chinesische schriftzeichen beinhaltet öffnen...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

07.08.2007, 22:01

Korrekt!
@D13_Dreinig

Werbeanzeige