C++如何在txt文件中逐行读取内容并判断其中是否存在指定的汉字,如果存在则跳过继续读取下一行,否则另存存

C++如何在txt文件中逐行读取内容,并判断其中截取的指定字符串是否存在指定的汉字,如果存在则跳过继续读取下一行,实现代码如下
void Load(CString str)
{
ifstream in(str);
ifstream out1("file1.txt");
ifstream out2("file1.txt");
string s;
TCHAR a[6]={'你','我', '他' ,'它','是','的' }
while(getlin(in,s))/*逐行读取,内容如如 "2011.8.15 565 533 888 我是xx"*/
{
string s1;
string s2;
s1=s.substr(0,s.find("\t"));
s2=s.substr((s.find_last_of("\t")+1),s.size());
wstring ws3(s2.begin(),s2.end());
for(i=0;i<6;i++)
{
if(ws3.find(a[i]) !=ws3.npos)
{
break;
}
}
if(i<6)
{ /*找到指定汉字,则只保存该行的前段字符串 并换行进行下一行的处理*/
out1.write(s1.c_str,s1.length);
out1.write("\n",strlen(char));
}
else
{ /*没有找到指定汉字,则保存该行的前段字符串到file1并空格 把符合要求的下一段保存到空格后面 最后换行进行下一行的处理*/
out1.write(s1.c_str,s1.length);
out1.write("\t",strlen(char));
out1.write(s2.c_str,s2.length);
out1.write("\n",strlen(char));
/*没有找到指定汉字,则把该段字符存到file2*/
out2.write(s2.c_str,s2.length);
out2.write("\n",strlen(char));
}
}
fclose(in);
fclose(out1);
fclose(out2);
}
感觉问题出在下面两句语句上,
wstring ws3(s2.begin(),s2.end());
if(ws3.find(a[i]) !=ws3.npos)
网上查了下,说是关系到宽字节和多字节的转换,宽字节跟多字节的转换始终没整明白,我弄了2天了,实在是弄不出来了,最后仅剩的30分我都贡献了,那位C++牛人大哥帮忙整一下,就当是指导一下新人菜鸟吧。

第1个回答  推荐于2016-02-21
void Load(string str)
{
ifstream in(str);
ofstream out1("file1.txt");
ofstream out2("file2.txt");
int i = 0;
string s;
string a[6]={"你", "我", "他", "它", "是", "的"};
while(getline(in,s))/*逐行读取,内容如如 "2011.8.15 565 533 888 我是xx"*/
{
string s1;
string s2;
s1=s.substr(0,s.find("\t"));
s2=s.substr((s.find_last_of("\t")+1),s.size());
for(i=0;i<6;i++)
{
if(s2.find(a[i]) != -1)
{
break;
}
}
if(i<6)
{ /*找到指定汉字,则只保存该行的前段字符串 并换行进行下一行的处理*/
out1 << s1 << "\n";
}
else
{ /*没有找到指定汉字,则保存该行的前段字符串到file1并空格 把符合要求的下一段保存到空格后面 最后换行进行下一行的处理*/
out1 << s1 << "\t" << s2 << "\n";
/*没有找到指定汉字,则把该段字符存到file2*/
out2 << s2 << "\n";
}
}
in.close();
out1.close();
out2.close();
}本回答被提问者采纳
相似回答