string NASCToolBox::WstringToString( UINT LocalOption, wstring wstr ) const
{
	wchar_t *wszString = new wchar_t [ wstr.length( ) + 1 ];
	wcscpy_s( wszString, wstr.length( ) + 1, wstr.c_str( ) );
	wszString[ wstr.length( ) ] = '\0';
	//setlocale( LC_ALL, "jpn" );
	//setlocale( LC_ALL, "chs" );
	//预转换,得到所需空间的大小
	UINT strLen = ::WideCharToMultiByte( LocalOption, NULL, wszString, -1, NULL, 0, NULL, NULL );
	//分配空间不要给'\0'留个空间,WideCharToMultiByte会给'\0'空间
	char *szAnsi = new char [ strLen ];
	::WideCharToMultiByte( LocalOption, NULL, wszString, -1, szAnsi, strLen, NULL, NULL );
	szAnsi[ strLen - 1 ] = '\0';

	string str = szAnsi;

	delete [ ] szAnsi;
	delete [ ] wszString;

#ifdef NEEDTEST
	/*校验转码是否有损*/
	if( StringToWstring( LocalOption, str ) != wstr ) cerr << "WARNING_TB001 - Converting unsafe!" << endl;
#endif
	
	return str;
}
示例#2
0
文件: utils.cpp 项目: wirepair/SoNew
	ParsedArgument ValidateArguments(SoNewArgumentParser &argParser, int argc, char **argv) {
		
		UIntTypeValidator *inj_validator = new UIntTypeValidator(1, 4);
		UIntTypeValidator *pid_validator = new UIntTypeValidator();
		FilePathValidator *fp_validator = new FilePathValidator();
		SetArguments(&argParser, inj_validator, pid_validator, fp_validator);
		ParsedArgument pa;
		try {
			pa = argParser.parse(argc, argv);
			// check if we're just listing processes first.
			if (pa.hasArgument("-l")) {
				PrintProcessList();
				exit(0);
			}
			if (pa.hasArgument("-h")) {
				ShowUsage(argParser);
				exit(0);
			}
			if (!pa.hasArgument("-p") && !pa.hasArgument("-n"))
				ShowError(argParser, L"Error: We require a process name or pid!");
			if (!pa.hasArgument("-i"))
				ShowError(argParser, L"Error: We require an injection method!");
		} catch(InvalidArgumentException iae) {
			String message = StringToWstring(iae.what());
			ShowError(argParser, message);
		}
		delete inj_validator;
		delete pid_validator;
		delete fp_validator;
		return pa;
	}
示例#3
0
void hpdf_doc::select_cjk_font()
{
	wstring font_str = StringToWstring(et_cp.c_ext_font_name);

	if (et_cp.c_ext_font_name != "")
		select_font(font_str);
	else
		select_font(et_cp.F);

}
示例#4
0
    void UIntVectorToWstring(vector<unsigned int>& uints, wstring& wstr)
    {
        string str;

        for (size_t i = 0; i < uints.size(); i++)
        {
            str.push_back((char)uints[i]);
        }

        StringToWstring(CP_ACP, str, wstr);
    }
示例#5
0
    void IntVectorToWstring(vector<int>& ints, wstring& wstr)
    {
        string str;

        for (size_t i = 0; i < ints.size(); i++)
        {
            str.push_back((char)ints[i]);
        }

        StringToWstring(CP_ACP, str, wstr);
    }
示例#6
0
void hpdf_doc::select_eng_font()
{
	wstring font_str = StringToWstring(et_cp.e_ext_font_name);

	if (et_cp.e_ext_font_name != "")
		select_font(font_str);
	else {
		h_current_font = HPDF_GetFont(h_pdf, PDF_STD_ANSI, NULL);

		if (h_current_page != 0)
			set_font_handle(h_current_page, h_current_font, false);
	}
}
示例#7
0
void hpdf_doc::init_font_table()
{
	wstring font_str(L"A");
	const char *font_name;
	string font_full_path = font_path_parent + PDF_STD_UNICODE;

	font_name = HPDF_LoadTTFontFromFile(h_pdf, font_full_path.c_str(), HPDF_TRUE);

	HPDF_Font font = HPDF_GetFont(h_pdf, font_name, PDF_STD_ENCODE);

	for (int i = 0; i < 26; i++)
	{
		font_str[0] = L'A' + i;
		mapped_font *fm = new mapped_font(font_name, PDF_STD_ENCODE);
		fm->font_handle = font;
		mapped_font_lookup_table[font_str] = fm;
	}

	font_full_path = font_path_parent + PDF_STD_KAI;
	font_name = HPDF_LoadTTFontFromFile(h_pdf, font_full_path.c_str(), HPDF_TRUE);
	font = HPDF_GetFont(h_pdf, font_name, PDF_STD_ENCODE);
	
	mapped_font *kai_fm = new mapped_font(font_name, PDF_STD_ENCODE);
	kai_fm->font_handle = font;
	mapped_font_lookup_table[L"K"] = kai_fm;

	for (map<string, string>::iterator j = external_fonts.begin(); j != external_fonts.end(); ++j)
	{
		wstring font_letter = StringToWstring(j->first);
		string font_path = j->second;

		font_full_path = font_path_parent + font_path;
		font_name = HPDF_LoadTTFontFromFile(h_pdf, font_full_path.c_str(), HPDF_TRUE);
		font = HPDF_GetFont(h_pdf, font_name, PDF_STD_ENCODE);

		mapped_font *fm = new mapped_font(font_name, PDF_STD_ENCODE);
		fm->font_handle = font;
		mapped_font_lookup_table[font_letter] = fm;
	}
}
wstring NASCToolBox::IntToTimeW( int Num ) const
{
	return StringToWstring( 936, IntToTime( Num ) );
}
示例#9
0
 bool UTF8StringToWstring(const string& strUTF8, wstring& wstr)
 {
     return StringToWstring(CP_UTF8, strUTF8, wstr);
 }            
示例#10
0
	void FileSystem::OpenDirectoryWindow(const std::string& directory)
	{
		ShellExecute(nullptr, nullptr, StringToWstring(directory).c_str(), nullptr, nullptr, SW_SHOW);
	}