| /* File : example.h -- stolen from the guile std_vector example */ | |
| #include <string> | |
| #include <algorithm> | |
| #include <functional> | |
| #include <numeric> | |
| #include <stdlib.h> | |
| #include <locale.h> | |
| std::string from_wstring_with_locale( const std::wstring source, | |
| const std::string locale ) { | |
| const char *current_locale = setlocale( LC_CTYPE, locale.c_str() ); | |
| int required_chars = wcstombs( NULL, source.c_str(), 0 ); | |
| std::string s; | |
| char *temp_chars = new char[required_chars + 1]; | |
| temp_chars[0] = 0; | |
| wcstombs( temp_chars, source.c_str(), required_chars + 1 ); | |
| s = temp_chars; | |
| delete [] temp_chars; | |
| setlocale( LC_CTYPE, current_locale ); | |
| return s; | |
| } | |
| std::wstring to_wstring_with_locale( const std::string source, | |
| const std::string locale ) { | |
| const char *current_locale = setlocale( LC_CTYPE, locale.c_str() ); | |
| int required_chars = mbstowcs( NULL, source.c_str(), 0 ); | |
| std::wstring s; | |
| wchar_t *temp_chars = new wchar_t[required_chars + 1]; | |
| temp_chars[0] = 0; | |
| mbstowcs( temp_chars, source.c_str(), required_chars + 1 ); | |
| s = temp_chars; | |
| delete [] temp_chars; | |
| setlocale( LC_CTYPE, current_locale ); | |
| return s; | |
| } |