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; }
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; }
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); }
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); }
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); }
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); } }
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 ) ); }
bool UTF8StringToWstring(const string& strUTF8, wstring& wstr) { return StringToWstring(CP_UTF8, strUTF8, wstr); }
void FileSystem::OpenDirectoryWindow(const std::string& directory) { ShellExecute(nullptr, nullptr, StringToWstring(directory).c_str(), nullptr, nullptr, SW_SHOW); }