diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2008-05-05 04:00:00 +0400 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:15:55 +0300 |
commit | 3901bf0ab88106a5b031cba7bc18d60cdebf7eef (patch) | |
tree | 808a2489abed822223b118b64e0553db80af6087 /CPP/Common/StringConvert.cpp | |
parent | bd1fa36322ac27f5715433b388742893d6524516 (diff) |
4.58 beta
Diffstat (limited to 'CPP/Common/StringConvert.cpp')
-rwxr-xr-x | CPP/Common/StringConvert.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/CPP/Common/StringConvert.cpp b/CPP/Common/StringConvert.cpp index c0b19e16..762efd8d 100755 --- a/CPP/Common/StringConvert.cpp +++ b/CPP/Common/StringConvert.cpp @@ -26,23 +26,31 @@ UString MultiByteToUnicodeString(const AString &srcString, UINT codePage) return resultString; } -AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage) +AString UnicodeStringToMultiByte(const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed) { - AString resultString; - if(!srcString.IsEmpty()) + AString dest; + defaultCharWasUsed = false; + if (!s.IsEmpty()) { - int numRequiredBytes = srcString.Length() * 2; - char defaultChar = '_'; - int numChars = WideCharToMultiByte(codePage, 0, srcString, - srcString.Length(), resultString.GetBuffer(numRequiredBytes), - numRequiredBytes + 1, &defaultChar, NULL); + int numRequiredBytes = s.Length() * 2; + BOOL defUsed; + int numChars = WideCharToMultiByte(codePage, 0, s, s.Length(), + dest.GetBuffer(numRequiredBytes), numRequiredBytes + 1, + &defaultChar, &defUsed); + defaultCharWasUsed = (defUsed != FALSE); #ifndef _WIN32_WCE if(numChars == 0) throw 282229; #endif - resultString.ReleaseBuffer(numChars); + dest.ReleaseBuffer(numChars); } - return resultString; + return dest; +} + +AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage) +{ + bool defaultCharWasUsed; + return UnicodeStringToMultiByte(srcString, codePage, '_', defaultCharWasUsed); } #ifndef _WIN32_WCE |