Szukam porady na temat najlepszego sposobu przekonwertowania std::wstring
na std::string
- ale szybka i brudna konwersja do użycia jako klucz w obiekcie std::map<std::string, int>
.C++ - std :: wstring to std :: string - szybka i brudna konwersja do użycia jako klucz w std :: map
Mapa jest dość duży, a to już dobrze zintegrowane z projektem już, i istnieje tylko kilka klawiszy, które wymagają tej konwersji więc myślę, że to będzie marnotrawstwem zmienić mapę na taki, który akceptuje std::wstring
jako klucz.
Dane wyjściowe konwersji nie mają większego znaczenia, ale muszą być spójne, aby za każdym razem niezawodnie pobierać prawidłowe wartości z mapy.
Aplikacja jest aplikacją wyłącznie dla systemu Windows.
Czy jest jakiś znany proces, aby niezawodnie przeprowadzić przetwarzanie zgrubne w tym celu? A może najlepszym sposobem będzie zwykły, właściwy proces konwersji (jak opisano w tym pytaniu/odpowiedzi na pytanie: How to convert wstring into string?)?
Edit: Proszę pamiętać - utraty informacji jest w porządku tak długo, jak rzeczy są spójne. np. jeśli wrzucę kilka japońskich znaków i konsekwentnie konwertują na to samo (potencjalnie śmieci) std::string
, jest to w porządku. To nigdy nie będzie wyświetlane, tylko jako klucz do wyciągnięcia wartości z mapy.
Dzięki!
An [adapter] (http://en.wikipedia.org/wiki/Adapter_pattern)? – krlmlr
Być może powinieneś przekonwertować 'std :: wstring' na [UTF-8] (http://en.wikipedia.org/wiki/UTF-8) i ustawić' std :: string' na tę wartość. Unikniesz w ten sposób bajtów "\ 0". –
Dlaczego w ogóle używasz 'std :: wstring'? [Użyj wszędzie UTF8.] (Http://utf8everywhere.org/) –