亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stringconverter.cpp

?? turecrypt6.0版本的源碼
?? CPP
字號:
/*
 Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.

 Governed by the TrueCrypt License 2.5 the full text of which is contained
 in the file License.txt included in TrueCrypt binary and source code
 distribution packages.
*/

#ifdef __GNUC__
#	include <cxxabi.h>
#endif
#include <locale>
#include <typeinfo>
#include "Buffer.h"
#include "Exception.h"
#include "ForEach.h"
#include "StringConverter.h"
#include "SystemException.h"

namespace TrueCrypt
{
	wstring StringConverter::FromNumber (double number)
	{
		wstringstream s;
		s << number;
		return s.str();
	}

	wstring StringConverter::FromNumber (int32 number)
	{
		wstringstream s;
		s << number;
		return s.str();
	}

	wstring StringConverter::FromNumber (uint32 number)
	{
		wstringstream s;
		s << number;
		return s.str();
	}

	wstring StringConverter::FromNumber (int64 number)
	{
		wstringstream s;
		s << number;
		return s.str();
	}

	wstring StringConverter::FromNumber (uint64 number)
	{
		wstringstream s;
		s << number;
		return s.str();
	}

	string StringConverter::GetTrailingNumber (const string &str)
	{
		size_t start = str.find_last_not_of ("0123456789");
		if (start == string::npos)
			return str;

		string s = str.substr (start + 1);
		if (s.empty ())
			throw ParameterIncorrect (SRC_POS);

		return s;
	}

	string StringConverter::GetTypeName (const type_info &typeInfo)
	{
		try
		{
#ifdef _MSC_VER
			// type_info::name() leaks memory as of MS VC++ 8.0
			string rawName (typeInfo.raw_name());

			int cut1 = (rawName.find (".?A") != string::npos) ? 4 : string::npos;
			int cut2 = rawName.find ("@");
			int cut3 = rawName.find ("@@");

			if (cut1 == string::npos || cut2 == string::npos || cut3 == string::npos)
				return typeInfo.name();

			return rawName.substr (cut2 + 1, cut3 - cut2 - 1) + "::" + rawName.substr (cut1, cut2 - cut1);

#elif defined (__GNUC__)
			int status;
			char *name = abi::__cxa_demangle (typeInfo.name(), nullptr, nullptr, &status);

			if (name)
			{
				string s (name);
				free (name);
				return s;
			}
#endif
		}
		catch (...) { }

		return typeInfo.name();
	}

	wstring StringConverter::QuoteSpaces (const wstring &str)
	{
		if (str.find (L' ') == string::npos)
			return str;

		wstring escaped (L"'");
		foreach (wchar_t c, str)
		{
			if (c == L'\'')
				escaped += L'\'';
			escaped += c;
		}
		return escaped + L'\'';
	}

	vector <string> StringConverter::Split (const string &str, const string &separators, bool returnEmptyFields)
	{
		vector <string> elements;

		if (!returnEmptyFields)
		{
			size_t p = 0;
			while ((p = str.find_first_not_of (separators, p)) != string::npos)
			{
				size_t end = str.find_first_of (separators, p);
				if (end == string::npos)
				{
					elements.push_back (str.substr (p));
					break;
				}

				elements.push_back (str.substr (p, end - p));
				p = end;
			}
		}
		else
		{
			string element;
			elements.push_back (element);
			foreach (char c, str)
			{
				if (separators.find (c) != string::npos)
				{
					element.erase();
					elements.push_back (element);
				}
				else
				{
					elements.back() += c;
				}
			}
		}

		return elements;
	}

	wstring StringConverter::ToExceptionString (const exception &ex)
	{
		const SystemException *sysEx = dynamic_cast <const SystemException *> (&ex);
		if (sysEx)
			return ToWide (sysEx->what()) + L": " + sysEx->SystemText() + L": " + sysEx->GetSubject();

		if (ex.what() && !string (ex.what()).empty())
			return ToWide (GetTypeName (typeid (ex)) + ": " + ex.what());
		
		return ToWide (GetTypeName (typeid (ex)));
	}

	string StringConverter::ToLower (const string &str)
	{
		string s;
		foreach (char c, str)
			s += tolower (c, locale());
		return s;
	}

	string StringConverter::ToSingle (const wstring &str, bool noThrow)
	{
		try
		{
			mbstate_t mbState;
			Memory::Zero (&mbState, sizeof (mbState));
			const wchar_t *src = str.c_str();

			size_t size = wcsrtombs (nullptr, &src, 0, &mbState);
			if (size == -1)
				throw StringConversionFailed (SRC_POS, str);

			vector <char> buf (size + 1);
			Memory::Zero (&mbState, sizeof (mbState));

			if ((size = wcsrtombs (&buf[0], &src, buf.size(), &mbState)) == -1)
				throw StringConversionFailed (SRC_POS, str);

			string s;
			s.insert (s.begin(), buf.begin(), buf.begin() + size);
			return s;
		}
		catch (...)
		{
			if (noThrow)
				return "";
			throw;
		}
	}

	uint32 StringConverter::ToUInt32 (const string &str)
	{
		uint32 n;
		stringstream ss (str);

		ss >> n;
		if (ss.fail() || n == 0xffffFFFFU)
			throw ParameterIncorrect (SRC_POS);

		return n;
	}

	uint32 StringConverter::ToUInt32 (const wstring &str)
	{
		uint32 n;
		wstringstream ss (str);

		ss >> n;
		if (ss.fail() || n == 0xffffFFFFU)
			throw ParameterIncorrect (SRC_POS);

		return n;
	}

	uint64 StringConverter::ToUInt64 (const string &str)
	{
		uint64 n;
		stringstream ss (str);

		ss >> n;
		if (ss.fail() || n == 0xffffFFFFffffFFFFULL)
			throw ParameterIncorrect (SRC_POS);

		return n;
	}

	uint64 StringConverter::ToUInt64 (const wstring &str)
	{
		uint64 n;
		wstringstream ss (str);

		ss >> n;
		if (ss.fail() || n == 0xffffFFFFffffFFFFULL)
			throw ParameterIncorrect (SRC_POS);

		return n;
	}
	
	string StringConverter::ToUpper (const string &str)
	{
		string s;
		foreach (char c, str)
			s += toupper (c, locale());
		return s;
	}

	wstring StringConverter::ToWide (const string &str, bool noThrow)
	{
		try
		{
			mbstate_t mbState;
			Memory::Zero (&mbState, sizeof (mbState));
			const char *src = str.c_str();

			size_t size = mbsrtowcs (nullptr, &src, 0, &mbState);
			if (size == -1)
				throw StringConversionFailed (SRC_POS);

			vector <wchar_t> buf (size + 1);
			Memory::Zero (&mbState, sizeof (mbState));

			if ((size = mbsrtowcs (&buf[0], &src, buf.size(), &mbState)) == -1)
				throw StringConversionFailed (SRC_POS);

			wstring s;
			s.insert (s.begin(), buf.begin(), buf.begin() + size);
			return s;
		}
		catch (...)
		{
			if (noThrow)
				return L"";
			throw;
		}
	}

	void StringConverter::ToWideBuffer (const wstring &str, wchar_t *buffer, size_t bufferSize)
	{
		if (str.length() < 1)
		{
			buffer[0] = 0;
			return;
		}

		BufferPtr (
			(byte *) buffer,
			bufferSize).CopyFrom (
				ConstBufferPtr ((byte *) (wstring (str).c_str()),
				(str.length() + 1) * sizeof (wchar_t)
			)
		);
	}

	string StringConverter::Trim (const string &str)
	{
		size_t start = 0;
		size_t end = str.size();
		if (end < 1)
			return str;

		foreach (char c, str)
		{
			if (c > ' ')
				break;
			++start;
		}

		foreach_reverse (char c, str)
		{
			if (c > ' ')
				break;
			--end;
		}

		return str.substr (start, end - start);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线免费观看视频| 亚洲人吸女人奶水| 97se亚洲国产综合自在线| 亚洲欧美日韩国产一区二区三区| 欧美男男青年gay1069videost| 九九**精品视频免费播放| 综合激情成人伊人| 日韩一区二区三区免费看| av资源站一区| 免费成人结看片| 亚洲人一二三区| 精品久久久久久亚洲综合网| 在线观看国产一区二区| 国产东北露脸精品视频| 国产精品理伦片| 欧美喷潮久久久xxxxx| 国产精品一区久久久久| 午夜精彩视频在线观看不卡| 久久久777精品电影网影网 | 综合久久国产九一剧情麻豆| 91精品国产欧美日韩| 色视频成人在线观看免| 国产成人小视频| 青青草一区二区三区| 亚洲美女屁股眼交| 欧美国产97人人爽人人喊| 欧美一级高清大全免费观看| 色婷婷综合久久久中文一区二区| 国产综合久久久久久久久久久久| 亚洲一区二区三区小说| 国产精品午夜在线| 精品久久久久久综合日本欧美| 欧美精品一二三区| 欧美午夜精品免费| 97久久超碰精品国产| 成人av手机在线观看| 高清成人在线观看| 国产在线精品一区二区不卡了| 日韩精品视频网| 亚洲妇熟xx妇色黄| 亚洲一区二区三区四区中文字幕| 国产欧美日本一区二区三区| 欧美xxxxx裸体时装秀| 日韩一区国产二区欧美三区| 欧美视频一二三区| 欧美色综合影院| 欧洲一区在线观看| jizz一区二区| 不卡的av中国片| 99久久久免费精品国产一区二区| 成人一区二区三区中文字幕| 国产一区二区美女| 国产精品99久久久久| 国产精品18久久久久久久网站| 激情综合一区二区三区| 国产在线国偷精品免费看| 国产资源在线一区| 国产精品一二三区| 成人av资源在线观看| 国产不卡免费视频| 国产成人精品一区二区三区四区 | 国产中文字幕精品| 国产自产视频一区二区三区| 国产成人免费视频网站高清观看视频| 国产一区不卡在线| 成人av午夜影院| 99精品视频一区二区| 色婷婷久久99综合精品jk白丝| 在线观看视频一区二区欧美日韩| 91免费观看在线| 在线精品国精品国产尤物884a| 欧美三区免费完整视频在线观看| 欧美在线一二三四区| 欧美久久一二区| 欧美成人国产一区二区| 国产视频911| 亚洲欧美日韩一区二区| 亚洲国产另类av| 免费看日韩a级影片| 国产在线播放一区| av在线这里只有精品| 欧美性xxxxxxxx| 欧美大白屁股肥臀xxxxxx| 欧美成人欧美edvon| 国产欧美一区二区精品秋霞影院| 亚洲人成精品久久久久久| 日韩国产欧美三级| 精品制服美女久久| 91日韩精品一区| 日韩欧美一级片| 一区二区中文视频| 日韩专区在线视频| 成人精品鲁一区一区二区| 欧美性一区二区| 精品国产一区二区三区忘忧草| 中文字幕乱码久久午夜不卡 | 成人美女在线视频| 欧美日韩一区二区三区在线看| 欧美变态tickle挠乳网站| 久久毛片高清国产| 亚洲一区二区影院| 精彩视频一区二区| 91日韩一区二区三区| 久久精品欧美一区二区三区麻豆| 亚洲桃色在线一区| 秋霞午夜鲁丝一区二区老狼| 99国产精品久久久久久久久久| 欧美在线影院一区二区| 2017欧美狠狠色| 专区另类欧美日韩| 强制捆绑调教一区二区| 色综合一区二区三区| 久久午夜羞羞影院免费观看| 亚洲一区二区中文在线| 成人激情黄色小说| 精品理论电影在线观看| 亚洲va欧美va天堂v国产综合| 国产成人高清视频| 日韩视频一区二区三区在线播放 | 国产精品视频第一区| 久久不见久久见免费视频7| 在线观看91精品国产入口| 国产精品青草久久| 久久er99精品| 欧美二区乱c少妇| 亚洲蜜桃精久久久久久久| 成人精品视频网站| 久久久精品天堂| 久久av资源网| 欧美成人三级在线| 日韩黄色免费电影| 欧美日韩精品二区第二页| 亚洲黄色小说网站| 99久精品国产| 国产精品国产成人国产三级| 国产成人无遮挡在线视频| 精品伦理精品一区| 另类小说欧美激情| 精品国产免费一区二区三区四区 | 国产成人夜色高潮福利影视| 精品国产乱码久久久久久免费| 日韩国产高清影视| 欧美日本不卡视频| 丝袜美腿亚洲综合| 5566中文字幕一区二区电影| 亚洲第一成年网| 欧美日韩不卡在线| 五月激情综合网| 色综合久久中文综合久久牛| 亚洲女厕所小便bbb| 一本大道综合伊人精品热热| 伊人色综合久久天天人手人婷| 欧美亚洲国产一区在线观看网站| 一区二区视频在线| 在线观看亚洲a| 亚洲777理论| 在线观看免费亚洲| 亚洲一区二区高清| 欧美亚洲国产怡红院影院| 亚洲精品成人悠悠色影视| 欧美四级电影网| 视频在线在亚洲| 日韩一区和二区| 国产在线精品一区二区不卡了 | 日韩女优视频免费观看| 美国三级日本三级久久99| 久久理论电影网| 成人av集中营| 亚洲一区免费观看| 91精品福利在线一区二区三区 | 午夜天堂影视香蕉久久| 91精品国产91久久综合桃花 | 国产精品对白交换视频| 一道本成人在线| 偷窥少妇高潮呻吟av久久免费| 日韩色在线观看| 丁香婷婷深情五月亚洲| 亚洲青青青在线视频| 欧美欧美欧美欧美首页| 激情亚洲综合在线| 国产精品久久久久aaaa| 色综合激情五月| 麻豆国产精品官网| 国产精品天干天干在观线| 欧美日韩一区二区在线视频| 麻豆视频一区二区| 国产精品免费免费| 777奇米四色成人影色区| www.亚洲人| 天天色天天操综合| 国产婷婷一区二区| 色老头久久综合| 久久精品国产99国产精品| 国产精品超碰97尤物18| 911国产精品| 成人av网在线| 久久精品国产999大香线蕉| 亚洲婷婷综合色高清在线| 日韩精品一区二区三区swag | 亚洲视频每日更新|