写了 windows RC 资源多语言string 替换的程序,发出来看下。
来源:互联网 发布:php基本语法 编辑:程序博客网 时间:2024/06/11 03:49
#include <iostream>#include <string>#include <vector>#include <sstream>#include <cstring>#include <fstream> // std::ifstream#include <map>#include <iostream> // std::cout#include <fstream> // std::ifstreamusing namespace std;vector< string > readfile1( char * pcFilename);char *delete_space(char src[]);map< string ,string> VectorToMap( vector< string > a );void SplitString(const string& s, vector<string>& vStore, const string& c);map< string, string > changTheValue( map< string, string > mapEnglishRC, map< string, string > mapOtherRC);void writeFile( string sInputFileName, string sOutputFilename, map< string, string> mapChange );void StringToFirstStringSecondString(string inputString, string &firstString, string &secondString);int main(int argc, char* argv[]){ vector< string > vEnglistStr; vector< string > vOtherStr; map< string, string > mapEnglishRC; map< string, string > mapOtherRC; //vEnglistStr = readfile1("en.txt"); //vOtherStr = readfile1("rus.txt"); vEnglistStr = readfile1(argv[1]); vOtherStr = readfile1(argv[2]); mapEnglishRC = VectorToMap( vEnglistStr ); mapOtherRC = VectorToMap( vOtherStr ); mapEnglishRC = changTheValue( mapEnglishRC, mapOtherRC ); //writeFile( "en.txt", "output.txt", mapEnglishRC ); writeFile( argv[1], argv[3], mapEnglishRC ); cout << "Hello world!" << endl; return 0;}vector<string> readfile1( char * pcFilename){ ifstream in(pcFilename);string line;string strInputLine ;vector< string> vec_store_line;bool bFlag =false;if(in) // 有该文件{while (getline (in, line)) // line中不包括每行的换行符{ if(line.size() == 0) continue; char *pcInputLine = delete_space( const_cast<char*> ((line.c_str() ))); string strInputLine = string( pcInputLine ); if (strInputLine == "STRINGTABLE") { bFlag = true; continue; } if (strInputLine == "BEGIN") continue; if (strInputLine == "END") continue; if (bFlag == false) { continue; } cout << strInputLine << endl; vec_store_line.push_back( strInputLine ); }}else // 没有该文件{cout <<"no such file" << endl;}return vec_store_line;}char *delete_space(char src[]){void writeFile( string sInputFileName, string sOutputFilename, map< string, string> mapChange ); char *ret = src; char *p1 = src; char *p2; if (NULL == src) return NULL; while (*p1 == ' ' || *p1 == '\t')//跳过最前面空白字符(这里增加了2楼提到的'\t'字符) p1++; p2 = p1; while (*p2) p2++; while (--p2 >= src && (*p2== ' ' || *p2 == '\t'))//跳过最后面空白字符 ; while (p1 <= p2) *src++ = *p1++;//拷贝中间部分 *src = 0; return ret;}void SplitString(const std::string& s, std::vector<std::string>& v, const std::string& c){ std::string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while(std::string::npos != pos2) { v.push_back(s.substr(pos1, pos2-pos1)); pos1 = pos2 + c.size(); pos2 = s.find(c, pos1); } if(pos1 != s.length()) v.push_back(s.substr(pos1));}map<string ,string> VectorToMap( vector< string > myvector ){ map< string,string> mapString; vector<string>::iterator it ; for (it = myvector.begin() ; it != myvector.end(); ++it) { if( string(*it).size() == 0 ) continue; vector<string> vStoreFirstSecond; SplitString(*it, vStoreFirstSecond, "\""); string sFirstString( delete_space( const_cast<char*> ((vStoreFirstSecond[0].c_str() )))); string sSecondString( delete_space( const_cast<char*> ((vStoreFirstSecond[1].c_str() )))); cout<< sFirstString<<endl; cout<< sSecondString<<endl; mapString.insert( pair<string,string>( sFirstString, sSecondString ) ); } return mapString;}map< string, string > changTheValue( map< string, string > mapEnglishRC, map< string, string > mapOtherRC){ for( map< string, string>::iterator it = mapEnglishRC.begin(); it != mapEnglishRC.end(); it++) { map< string, string>::iterator itOtherRC; itOtherRC = mapOtherRC.find( it -> first ); if(itOtherRC == mapOtherRC.end()) { continue; } else { it -> second = itOtherRC ->second; } } return mapEnglishRC;}void writeFile( string sInputFileName, string sOutputFilename, map< string, string> mapChange ){ ifstream fin(sInputFileName.c_str()); string line; if(!fin){ cout<<"File open error!\n"; return; } ofstream fout(sOutputFilename.c_str()); while(!fin.eof()) { getline(fin, line); if(line.size() == 0) { fout<<"\n"<<endl; continue; } char *pcInputLine = delete_space( const_cast<char*> ((line.c_str() ))); string strInputLine = string( pcInputLine ); vector<string> vStoreFirstSecond; SplitString(strInputLine, vStoreFirstSecond, "\""); if(vStoreFirstSecond.size()>1) { string sFirstString( delete_space( const_cast<char*> ((vStoreFirstSecond[0].c_str() )))); string sSecondString( delete_space( const_cast<char*> ((vStoreFirstSecond[1].c_str() )))); map< string, string>::iterator it; it = mapChange.find( sFirstString ); string temp = sFirstString +" "+"\""+it -> second +"\""+"\n"; cout<< temp<<endl; fout << sFirstString <<" "<<"\""<< it -> second <<"\""<<endl; } else { fout <<strInputLine<<endl; cout<<strInputLine<<endl; } } fin.close(); fout.close();}void StringToFirstStringSecondString(string inputString, string &firstString, string &secondString){ vector<string> vStoreFirstSecond; SplitString(inputString, vStoreFirstSecond, "\""); string sFirstString( delete_space( const_cast<char*> ((vStoreFirstSecond[0].c_str() )))); string sSecondString( delete_space( const_cast<char*> ((vStoreFirstSecond[1].c_str() )))); firstString = sFirstString; secondString = sSecondString;}
0 0
- 写了 windows RC 资源多语言string 替换的程序,发出来看下。
- ResEdit Windows下免费的rc资源编辑器
- 以目前的形势来看过年也肯定在写程序了
- VC程序资源的替换
- Windows 资源文件(.rc文件)--Qt程序添加图标
- 如何写Windows下的批处理程序
- Windows下用安装go语言写程序
- WINDOWS下与LINUX下写C程序的区别
- windows资源文件(.rc)是如何变成窗口控件的
- xx.rc windows资源文件的定义和使用
- windows资源文件(.rc)是如何变成窗口控件的
- 一个C语言初学者写一个查找替换程序的历程
- WinCE下用资源RC添加菜单的方法
- vc6.0下资源文件/rc文件的使用
- 大家来看一个这样的C语言小程序
- windows mobile 下用资源DLL实现多语言支持的方法
- 介绍如何写Windows下的批处理程序和应用
- 用Delphi写一个Windows下的纯SDK程序
- ThinkPHP框架基础回顾
- cuda7.0 + caffe + ubuntu14.04(笔记本) 配置过程
- B实习编程·1
- BZOJ 3998 TJOI2015 弦论 后缀自动机
- Linux常用命令-文件处理命令-目录处理命令(下)
- 写了 windows RC 资源多语言string 替换的程序,发出来看下。
- IO输入输出流学习笔记(第二篇)(JAVA)
- LeetCode 10 Regular Expression Matching 正则匹配
- 按单词将句子逆序
- hdu-1796 How many integers can you find(容斥原理)
- NSDictionary存放整型
- AM335x—WM8960声卡驱动移植
- 编程之美7:字符串,那些你必须要会的事。
- 清除Xcode缓存