| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1894 人关注过本帖
标题:急问:汉字写入文本文件的乱码问题
只看楼主 加入收藏
winnie3223
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-7
收藏
 问题点数:0 回复次数:3 
急问:汉字写入文本文件的乱码问题
主要问题是:我在调用函数getCnSameW("知识管理","隐性知识",strKC),该函数将公共子串写到文件temp.txt时遇到汉字显示问题。
    若只有语句: fout<<strKC;则显示不出汉字
    但是加上一条语句fout<<"你好(这里只要有任一汉字)";就可以将strKC也显示出来。
    不知道是什么原因,该如何修改?
 
源文件如下:
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>//注意这里不是string.h string.h是C字符串头文件
#include <iomanip>
//using namespace std;
namespace std {} using namespace std;
main(){
 char strKC[100]="";
 getCnSameW("知识管理","隐性知识",strKC);
}
void getCnSameW(char* str1,char* str2,char *sameW)
  {   
 int i=0,s1=0,s2=0,k=0,m=2;
 s1=strlen(str1)/2;//s1,s2为汉字串长的一半
 s2=strlen(str2)/2;
 sameW[0]='\0';//若无此句,strcat()无法运行,是保证sameW为数组而非字符串
 char sub1[80]="";
 ofstream fout("temp.txt");
 for(i=0;i<s1-1;i++)
 {  
  strncpy(sub1,str1+i*2,m*2);
  if(isSubStr(sub1,str2))        //isSubStr函数只是用来看是否是子串
  {   
   for(k=0;k<s1-2-i;k++)
   {//再多看下一个汉字是否是子串
    m++;
    strncpy(sub1,str1+i*2,m*2);
   
    if(!isSubStr(sub1,str2))
    {
     m--;
     sub1[2*m]='\0';      
     break;//不再往下看
    }   
   }   
   strcat(sameW,sub1);
   for(k=0;k<m+4;k++) sub1[k]='\0';//清空数组sub1   
   i=m+i-1;//重新定位数组指针      
   m=2;//还原步长为两个汉字   
  }   
 }
 
 fout<<sameW;
 //fout<<"你好";
        //问题如下:  在temp.txt文件中显示不出汉字;但是在下面加一句:fout<<"你好(只要此处有汉字)";,前面的sameW就可以正常显示。请问该怎么修改?
        //问题

 fout.close();
 return strlen(sameW);
 
 
  }   
  
int isSubStr(char *sub2, char *str3){ //该函数只是判断sub2是否为子串
 int s2=strlen(str3),l=strlen(sub2);
 int j,r=0;//r为返回值,一直不等,r=0;
 char tempsub[40]="1";
 for(j=0;j<s2-l+1;j++){  //判断是否为子串。方法:对str2,从0位取s2个字符,一旦相等,r=l;   
  strncpy(tempsub,str3+j,l);
  if(!strcmp(sub2,tempsub)){ //如果相等,就是子串  
   r=l;
  // cout<<"第一个子串:"<<sub2<<endl;
   break;
  };
 }
 return r;
}
搜索更多相关主题的帖子: 乱码 汉字 文本文件 
2010-09-10 10:34
winnie3223
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-7
收藏
得分:0 
到底是什么原因呢?哪位大侠帮忙看一下。

学而时习之
2010-09-10 22:50
winnie3223
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-7
收藏
得分:0 
为何没人理呢?难道是因为问题太弱智?

学而时习之
2010-09-13 22:35
winnie3223
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-7
收藏
得分:0 
这个问题可能比较难吧  问了几个专业人士  都没法解决

学而时习之
2010-09-16 19:40
快速回复:急问:汉字写入文本文件的乱码问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012290 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved