Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/Common/StringConvert.cpp')
-rwxr-xr-xCPP/Common/StringConvert.cpp28
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