Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#14

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 17:49
Zitat von sniper_w:
Ohne TypeCasting ist bei mir alles OK.
Wo ist ein Typecast? Du meinst wohl Erzeugen eines std::string.

Der Typ TCHAR ist laut MSDN auf einem Unicode-System als WCHAR definiert. std::string gips aber nicht für wchars, sondern nur für (ANSI-)chars. Mein Compiler wirft mir wenigstens einen Fehler um die Ohren, wenn ich ein wchar_t-Array als Parameter an den std::string()-ctor übergebe. Probier's also mal entweder mit einem Container, der Strings unterstützt (in GNUs libstdc++ zum Bleistift std::wstring, oder std::basic_string<wchar_t> und eine passende Spezialisierung selber implementieren) oder mit einem single-byte Typ, also einfach char[] statt TCHAR[]. Systemabhängige Typen zu verwenden ohne die Funktionen anzupassen ist sowieso eine gefährliche Sache. Wenn du wirklich einen String aus wchars haben willst, solltest du auch GetUserNameW() verwenden.
Ich kann zwar nicht ausprobieren, ob das ganze mit GetUserName() funktioniert, aber zumindest das erzeugen eines std::strings aus einem char[] funktioniert bei mir (GCC 4.0.2) wunderbar:
Code:
#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
  char pdata[42];
  strcpy(pdata, "blubb");
  std::cout << std::string(pdata) << std::endl;
  return 0;
}
kompiliert mit gcc -Wall ohne Warnungen und arbeitet wie erwartet.
  Mit Zitat antworten Zitat