Wie char *argv[] in string speichern?
-
Hallo, wie speichert man char* argv[] in ein string, habs so probiert ist aber falsch:
string test = argv[1];
-
Was meinst du mit "ist aber falsch"? Zeig das Ganze doch mal in größerem Zusammenhang - inklusive der zurückgegebenen Fehlermeldungen.
-
Sorry ist doch richtig, komisch eben hab ich wohl was anderes getestet.
-
Noch eine andere Frage, wie kann man char argv[]* in *wchar_t value konvertieren?
-
Versuch's mal mit widen() (irgendwo in der FAQ steht auch, wie du das anwenden kannst) oder A2W (aus der MFC/ATL von Microsoft).
-
Gibts vielleicht fertige Klassen/Funktionen mit den man einfach Datentypen in andere konvertiert wie z.B. StringToWchar(string str)
-
Zunächst mal: Einen char* argv[] in einen wchar_t Array zu konvertieren wird Dir nicht gelingen - Du kannst aber natürlich jeden einzelnen char* des Array argv[] in je einen wchar_t Array konvertieren...
BTW: Suche nach "widen" oder "wchar_t" in der FAQ - erster (und einziger) Treffer

http://c-plusplus.net/forum/viewtopic-var-t-is-39492-and-highlight-is-widen.html
-
Im Ansi-Standard hast du dafür die facette cconv<> (beim Namen bin ich mir nicht sicher) mit den Methoden widen() (char -> wchar_t) und narrow (wchar_t nach char), die du einsetzen kannst. In der MFC gibt die Konvertierungsmakros A2T(), T2W() etc. für solche Konvertierungen.
-
Eine funktionierende Implementierung (benötigt die Headers locale, string und vector):
std::wstring WidenString( char const* str, std::locale loc = std::locale() ) { std::size_t length = std::strlen( str ); std::vector< wchar_t > result( length ); std::use_facet< std::ctype< wchar_t > >( loc ).widen( str, str + length, &result[ 0 ] ); return std::wstring( result.begin(), result.end() ); }Da für mich immernoch nicht abschließend geklärt ist, ob man auf std::strings auch schreibend auf die Sequenz zugreifen darf, wenn man sich die Adresse des ersten Elements holt, hier noch der Umweg über std::vector.