Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Unicode

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 < [ 2 ] [ 3 ]
000
07.08.2007, 18:12 Uhr
~tobb87
Gast


Hi,

kann mir jemand bei dem Problem helfen:


Code:
#include <string>
#include <fstream>

int main()
{
    //This works:
    std::string OptionsFileName = "options.ini"
    std::ofstream OptionsFile(OptionsFileName.c_str());

    //This works not: (why?)
    std::wstring WOptionsFileName = L"options.ini"
    std::wofstream WOptionsFile(WOptionsFileName.c_str()); //Error
}

//Compiler:
//Error: no matching function to call »std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::basic_ofstream(const wchar_t*)«
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.08.2007, 19:05 Uhr
0xdeadbeef
Gott
(Operator)


Der Dateiname muss immer noch als char const * angegeben werden, der Stream schreibt aber nachher wchar_ts raus.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.08.2007, 20:36 Uhr
~tobb87
Gast


Hm, wie komme ich dann von wchar_t * zu char *?
Denn WOptionsFileName.c_str() scheint wchar_t * zurück zu geben, ich benötige aber char *...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.08.2007, 16:16 Uhr
xXx
Devil


hmm in dem du einfach std::string nimmst? std::wstring muss wchar_t* zuückgeben, da es ja im Prinzip nichts anderes ist als:

C++:
namespace std
{
    typedef std::basic_string<wchar_t> wstring;
    typedef std::basic_string<char> string;
};
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.08.2007, 19:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ist aber eigentlichn non-sense in der STL - was wenn du nun unicode-zeichen in dem dateinamen hast/haben willst?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.08.2007, 20:04 Uhr
xXx
Devil


geht nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.08.2007, 12:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von xXx:
geht nicht.

jo - und das halte ich fürn designfehler in der STL
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.08.2007, 12:25 Uhr
~hm
Gast



Zitat von FloSoft:


Zitat:
geht nicht.

jo - und das halte ich fürn designfehler in der STL


Nein, ist kein Designfehler! Und es geht, aber halt nicht über einen standardkonformen Weg.

Dieser Post wurde am 09.08.2007 um 16:39 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.08.2007, 13:07 Uhr
Blubber2063



Und das es keiner ist weisst du woher, sollte ein Betriebsystem Unicode für Dateinamen zulassen, dann kommt man mit der STL Lösung nicht sehr weit, da Unicode sich ja aber für den Standardzeichensatz mit Ascii deckt, wäre das also nicht unbedingt schlecht gewesen hier für Dateinamen auch Unicode zuzulassen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.08.2007, 13:18 Uhr
~wissender
Gast


Es ist keiner weil es extrem unportabel wäre sowas anzubieten. Sollte ein System nämlich keine Unicodenamen zulassen kommst du noch viel weniger weit. C++ ist dafür ausgelegt überall komfortabel anwendbar zu sein und nicht nur ein einigen Systemen. Und da Dateinamen extremst Betriebssystemabhängig sind (nichtmal Platformabhängig) macht es keinen Sinn das zu unterstützen. Der Vorschlag wurde zwar eingereicht aber nicht umgesetzt, es ist also kein Designmangel sondern schon so gewollt. Wie das in Zukunft aus sehen wird ist eine andere Frage!

Und wo wir gerade dabei sind, die STL hat damit garnichts zu tun. Es dreht sich hier ausschließlich um die Standard IO Library von C++ und die hat mit der STL herzlich wenig am Hut.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ 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: