Sto cercando un po 'di consigli sul modo migliore per convertire uno std::wstring
in std::string
- ma un conversione rapida e sporca da utilizzare come chiave in un oggetto std::map<std::string, int>
.C++ - std :: wstring a std :: string - conversione rapida e sporca da utilizzare come chiave in std :: map
La mappa è abbastanza grande, ed è già ben integrato nel progetto già, e ci sono solo una manciata di chiavi che richiedono questa conversione quindi penso che sarà uno spreco per cambiare la mappa in uno che accetta std::wstring
come la chiave.
L'output della conversione non ha molta importanza, ma deve essere coerente in modo da estrarre in modo affidabile i valori corretti dalla mappa ogni volta.
L'applicazione è un'applicazione solo per Windows.
Esiste un processo noto per eseguire una conversione approssimativa in modo affidabile per questo scopo? Oppure il modo migliore sarebbe attraverso il solito processo di conversione (come descritto in questa domanda/risposta SO: How to convert wstring into string?)?
Edit: Si prega di tenere presente - la perdita di informazioni va bene finché cose sono coerenti. Ad esempio, se inserisco alcuni caratteri giapponesi e vengono convertiti in modo coerente nella stessa (potenzialmente spazzatura) std::string
, va bene. Questo non sarà mai per la visualizzazione, solo per essere usato come chiave per estrarre i valori da una mappa.
Grazie!
Un [adattatore] (http://en.wikipedia.org/wiki/Adapter_pattern)? – krlmlr
Forse dovresti convertire 'std :: wstring' in [UTF-8] (http://en.wikipedia.org/wiki/UTF-8), e impostare' std :: string' su quel valore. In questo modo eviterete i byte spuri '\ 0'. –
Perché usi 'std :: wstring'? [Usa UTF8 ovunque.] (Http://utf8everywhere.org/) –