本文整理汇总了C++中wstring::resize方法的典型用法代码示例。如果您正苦于以下问题:C++ wstring::resize方法的具体用法?C++ wstring::resize怎么用?C++ wstring::resize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wstring
的用法示例。
在下文中一共展示了wstring::resize方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ConvertUncode
void ConvertUncode( const string &sString, wstring &wsString )
{
int nSize = MultiByteToWideChar( CP_ACP, 0, sString.c_str(), -1, NULL, 0 );
nSize --;
wsString.resize( nSize );
MultiByteToWideChar( CP_ACP, 0, sString.c_str(), -1, &wsString[0], nSize );
}
示例2: ErasePunctuation
void ErasePunctuation(wstring& str, bool keep_trailing) {
auto rlast = str.rbegin();
if (keep_trailing)
rlast = std::find_if(str.rbegin(), str.rend(),
[](wchar_t c) -> bool {
return !(c == L'!' || // "Hayate no Gotoku!", "K-ON!"...
c == L'+' || // "Needless+"
c == L'\''); // "Gintama'"
});
auto it = std::remove_if(str.begin(), rlast.base(),
[](int c) -> bool {
// Control codes, white-space and punctuation characters
if (c <= 255 && !isalnum(c))
return true;
// Unicode stars, hearts, notes, etc. (0x2000-0x2767)
if (c > 8192 && c < 10087)
return true;
// Valid character
return false;
});
if (keep_trailing)
std::copy(rlast.base(), str.end(), it);
str.resize(str.size() - (rlast.base() - it));
}
示例3: GetFileWithoutExtension
wstring GetFileWithoutExtension(wstring str) {
size_t pos = str.find_last_of(L".");
if (pos != wstring::npos)
str.resize(pos);
return str;
}
示例4: _serialize
void BinReader::_serialize( wstring& nValue, const wchar_t * nName, const wchar_t * nOptimal )
{
__u16 count_ = 0;
__i8 value_ = 0;
mStream.read((char *)(&count_), sizeof(__u16));
nValue.resize(count_);
mStream.read((char *)(&nValue[0]), sizeof(wchar_t) * count_);
}
示例5:
void
GUID2String( const GUID &guid, wstring &str )
{
str.resize( 36 );
swprintf_s( (wchar_t*)str.data(), 37, _T("%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"),
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7] );
}
示例6: ReadUNICODE
bool IO_CharDecoder::ReadUNICODE(IO_InputDataStream* stream, wstring& text)
{
if(stream == NULL)
{
return false;
}
size_t length = 0;
text.resize(IO_CHAR_BUFFER_SIZE);
while(true)
{
int ch1 = stream->ReadByte() & 0xff;
int ch2 = stream->ReadByte() & 0xff;
int ch = ch1 | (ch2 << 8);
if(length >= text.max_size())
{
text.resize(text.max_size() * 2);
}
if(ch == 0)
{
break;
}
if(ch == '\r')
{
stream->Skip(2);
}
if(ch == '\n')
{
break;
}
text[length++] = (wchar_t)ch;
}
return true;
}
示例7: EraseRight
void EraseRight(wstring& str1, const wstring& str2, bool case_insensitive) {
if (str1.length() < str2.length())
return;
if (case_insensitive) {
if (!std::equal(str2.begin(), str2.end(), str1.end() - str2.length(),
&IsCharsEqual))
return;
} else {
if (!std::equal(str2.begin(), str2.end(), str1.end() - str2.length()))
return;
}
str1.resize(str1.length() - str2.length());
}
示例8: HRESULT
// determine the directory for a given pathname
// (wstring only for now; feel free to make this a template if needed)
/*static*/ wstring File::DirectoryPathOf(wstring path)
{
#ifdef _WIN32
// Win32 accepts forward slashes, but it seems that PathRemoveFileSpec() does not
// TODO:
// "PathCchCanonicalize does the / to \ conversion as a part of the canonicalization, it's
// probably a good idea to do that anyway since I suspect that the '..' characters might
// confuse the other PathCch functions" [Larry Osterman]
// "Consider GetFullPathName both for canonicalization and last element finding." [Jay Krell]
path = msra::strfun::ReplaceAll<wstring>(path, L"/", L"\\");
HRESULT hr;
if (IsWindows8OrGreater()) // PathCchRemoveFileSpec() only available on Windows 8+
{
typedef HRESULT(*PathCchRemoveFileSpecProc)(_Inout_updates_(_Inexpressible_(cchPath)) PWSTR, _In_ size_t);
HINSTANCE hinstLib = LoadLibrary(TEXT("api-ms-win-core-path-l1-1-0.dll"));
if (hinstLib == nullptr)
RuntimeError("DirectoryPathOf: LoadLibrary() unexpectedly failed.");
PathCchRemoveFileSpecProc PathCchRemoveFileSpec = reinterpret_cast<PathCchRemoveFileSpecProc>(GetProcAddress(hinstLib, "PathCchRemoveFileSpec"));
if (!PathCchRemoveFileSpec)
RuntimeError("DirectoryPathOf: GetProcAddress() unexpectedly failed.");
// this is the actual function call we care about
hr = PathCchRemoveFileSpec(&path[0], path.size());
FreeLibrary(hinstLib);
}
else // on Windows 7-, use older PathRemoveFileSpec() instead
hr = PathRemoveFileSpec(&path[0]) ? S_OK : S_FALSE;
if (hr == S_OK) // done
path.resize(wcslen(&path[0]));
else if (hr == S_FALSE) // nothing to remove: use .
path = L".";
else
RuntimeError("DirectoryPathOf: Path(Cch)RemoveFileSpec() unexpectedly failed with 0x%08x.", (unsigned int)hr);
#else
auto pos = path.find_last_of(L"/");
if (pos != path.npos)
path.erase(pos);
else // if no directory path at all, use current directory
return L".";
#endif
return path;
}
示例9: do_log
static void do_log(int log_level, const char *msg, va_list args, void *param)
{
fstream &logFile = *static_cast<fstream*>(param);
char str[4096];
#ifndef _WIN32
va_list args2;
va_copy(args2, args);
#endif
vsnprintf(str, 4095, msg, args);
#ifdef _WIN32
if (IsDebuggerPresent()) {
int wNum = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
if (wNum > 1) {
static wstring wide_buf;
static mutex wide_mutex;
lock_guard<mutex> lock(wide_mutex);
wide_buf.reserve(wNum + 1);
wide_buf.resize(wNum - 1);
MultiByteToWideChar(CP_UTF8, 0, str, -1, &wide_buf[0],
wNum);
wide_buf.push_back('\n');
OutputDebugStringW(wide_buf.c_str());
}
}
#else
def_log_handler(log_level, msg, args2, nullptr);
#endif
if (too_many_repeated_entries(logFile, msg, str))
return;
if (log_level <= LOG_INFO || log_verbose)
LogStringChunk(logFile, str);
#if defined(_WIN32) && defined(OBS_DEBUGBREAK_ON_ERROR)
if (log_level <= LOG_ERROR && IsDebuggerPresent())
__debugbreak();
#endif
}
示例10: EditTitle
void MediaPlayers::EditTitle(wstring& str, int player_index) {
if (str.empty() || items[player_index].edits.empty()) return;
for (unsigned int i = 0; i < items[player_index].edits.size(); i++) {
switch (items[player_index].edits[i].mode) {
// Erase
case 1: {
Replace(str, items[player_index].edits[i].value, L"", false, true);
break;
}
// Cut right side
case 2: {
int pos = InStr(str, items[player_index].edits[i].value, 0);
if (pos > -1) str.resize(pos);
break;
}
}
}
TrimRight(str, L" -");
}
示例11: ExpandDotDotDot
void ConfigHelper::ExpandDotDotDot(wstring& featPath, const wstring& scpPath, wstring& scpDirCached)
{
wstring delim = L"/\\";
if (scpDirCached.empty())
{
scpDirCached = scpPath;
wstring tail;
auto pos = scpDirCached.find_last_of(delim);
if (pos != wstring::npos)
{
tail = scpDirCached.substr(pos + 1);
scpDirCached.resize(pos);
}
if (tail.empty()) // nothing was split off: no dir given, 'dir' contains the filename
scpDirCached.swap(tail);
}
size_t pos = featPath.find(L"...");
if (pos != featPath.npos)
featPath = featPath.substr(0, pos) + scpDirCached + featPath.substr(pos + 3);
}
示例12: if
void utf8ToStdWstring(wstring & dest, const string & src)
{
int len = utf8DecodedLength(src);
dest.resize(len);
const uint8_t * ptr = (const uint8_t *) src.c_str();
const uint8_t * sentinel = ptr + src.size();
int characters = 0;
// http://en.wikipedia.org/wiki/UTF-8
while(ptr < sentinel) {
unsigned c0 = *ptr++;
unsigned left = sentinel - ptr;
/* trace("utf8ToStdWstring # 0x%x 0x%x (%c)",
(int) c0, (int) (c0 & 0xE0), (char) c0); */
if((c0 & 0x80) == 0)
dest[characters] = c0;
else if((c0 & 0xE0) == 0xC0) {
if(left < 1) {
error("utf8ToStdWstring # Lacking 1 byte from a UTF8 string");
return;
}
unsigned c1 = *ptr++;
dest[characters] = (c1 & 0x3F) + ((c0 & 0x1F) << 6);
/*trace("utf8ToStdWstring # Got 2 = 0x%x (%x %x)",
(int) dest[characters], c0, c1); */
}
else if((c0 & 0xF0) == 0xE0) {
if(left < 2) {
error("utf8ToStdWstring # Lacking 2 bytes from a UTF8 string");
return;
}
unsigned c1 = *ptr++;
unsigned c2 = *ptr++;
dest[characters] = (c2 & 0x3F) + ((((unsigned) c1) & 0x3F) << 6) +
((((unsigned) c0) & 0x0F) << 12);
}
else if((c0 & 0xF8) == 0xF0) {
if(left < 3) {
error("utf8ToStdWstring # Lacking 3 bytes from a UTF8 string");
return;
}
unsigned c1 = *ptr++;
unsigned c2 = *ptr++;
unsigned c3 = *ptr++;
dest[characters] = (c3 & 0x3) + ((c2 & 0x3F) << 6) +
((c1 & 0x3F) << 12) + ((c0 & 0x07) << 18);
}
else {
Radiant::error("utf8ToStdWstring # Bad character 0x%x", (int) c0);
return;
}
characters++;
}
}
示例13: bytes
bool IO_CharDecoder::ReadUTF8(IO_InputDataStream* stream, wstring& text)
{
if(stream == NULL)
{
return false;
}
int utflen = stream->ReadShort() & 0xffff;
vector<char> bytes(utflen);
stream->ReadFull(&bytes[0], utflen);
text.resize(utflen);
int ch1, ch2, ch3;
int length = 0;
int index = 0;
while(length < utflen)
{
ch1 = (int) bytes[length] & 0xff;
switch(ch1 >> 4)
{
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
/* 0xxxxxxx*/
length++;
text[index++] = (wchar_t)ch1;
break;
case 12: case 13:
/* 110x xxxx 10xx xxxx*/
length += 2;
if(length > utflen)
{
return false;
}
ch2 = (int)bytes[length - 1];
if((ch2 & 0xC0) != 0x80)
{
return false;
}
text[index++] = (wchar_t)(((ch1 & 0x1F) << 6) | (ch2 & 0x3F));
break;
case 14:
/* 1110 xxxx 10xx xxxx 10xx xxxx */
length += 3;
if(length > utflen)
{
return false;
}
ch2 = (int)bytes[length - 2];
ch3 = (int)bytes[length - 1];
if(((ch2 & 0xC0) != 0x80) || ((ch3 & 0xC0) != 0x80))
{
return false;
}
text[index++] = (wchar_t)(((ch1 & 0x0F) << 12) | ((ch2 & 0x3F) << 6) | ((ch3 & 0x3F) << 0));
break;
default:
/* 10xx xxxx, 1111 xxxx */
return false;
}
}
return true;
}
示例14: BKE_readFile
bool BKE_readFile(wstring &result, const wstring &filename)
{
#ifdef _MSC_VER
ifstream fs(filename, ios_base::binary | ios_base::out);
#else
char fname[FILENAME_MAX];
bkpwcstombs(fname, filename.c_str(), FILENAME_MAX);
ifstream fs(fname, ios_base::binary | ios_base::out);
#endif
if (!fs.good())
return false;
fs.seekg(0, ios_base::end);
string::size_type s = (string::size_type)fs.tellg();
fs.seekg(0, ios_base::beg);
string res;
res.resize(s + 1);
fs.read(&res[0], s);
fs.close();
if (res.size() >= 2 && (unsigned char)res[0] == 0xFF && (unsigned char)res[1] == 0xFE)
{
//Unicode16-LE
result.clear();
result.resize(s+1);
#ifdef HAVE_CODECVT
auto& f = use_facet<codecvt<wchar_t, char16_t, mbstate_t>>(locale());
mbstate_t mb=mbstate_t();
const char16_t* from_next;
wchar_t* to_next;
f.in(mb, (char16_t*)&res[2], (char16_t*)&res[s], from_next, &result[0], &result[s], to_next);
#else
utf16toucs4((uint32_t *)&result[0], (uint16_t *)&res[2], s / 2 - 1);
#endif
return true;
}
#ifndef WIN32
mbstowcs(NULL, NULL, 0); // reset the conversion state
#endif
if (res.size() >= 3 && (unsigned char)res[0] == 0xEF && (unsigned char)res[1] == 0xBB && (unsigned char)res[2] == 0xBF)
{
//UTF8-sig
result.clear();
result.resize(s + 1);
#ifdef WIN32
//must use WINAPI on windows
MultiByteToWideChar(CP_UTF8, 0, (LPCCH)(&res[3]), s - 3, &result[0], s);
#else
setlocale(LC_ALL, "en_US.UTF-8");
mbstowcs(&result[0], &res[3], s - 3);
#endif
return true;
}
else
{
//use UTF8-unsig in linux and GB2312 in win
result.resize(s + 1);
#ifdef WIN32
setlocale(LC_ALL, "zh-CN.GB2312");
#else
setlocale(LC_ALL, "en_US.UTF-8");
#endif
mbstowcs(&result[0], &res[0], s);
return true;
}
}