d盘根目录下有一test.txt文本,内容是d7dccffe(十六进制汉字“总晓”)

问题是怎么从文本中读取内容转化为汉字并输出到另一文本test2.txt中?用的是c++的部分程序是:#include<iostream>#include<fstream>... 问题是怎么从文本中读取内容转化为汉字并输出到另一文本test2.txt中?用的是c++
的部分程序是:
#include <iostream>
#include <fstream>
using namespace std;
const int SIZE=256;
void main()
{
ifstream file;
file.open("d:\\test.txt");
char str[SIZE]={1};//赋初始值
file.read(str,SIZE);//读取文本内容到str数组

file.close();
cin.get();
}
输出到test2.txt那段我会,关键是如何读取转化(是读取哦)?
展开
 我来答
mat97
2013-01-03 · TA获得超过944个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:370万
展开全部

可以用string来读取中文

#include"fstream"

#include"string"

#include"iostream"

using namespace std;

int main()

{

 string s;

 ifstream fin;

 ofstream fout;

 fin.open("d:\\test1.txt");

 fout.open("d:\\test2.txt");

 while(!fin.eof())

 {

  getline(fin,s);   //读取一行字符

  fout<<s<<'\n';

    cout<<s;

 }

 fin.close();

 fout.close();

 return 0;

}


不要自定义数组,很麻烦,最好用string,可靠又简便,写入时也用string来写



程序已测试过,中文可以成功输出到test2中去,也可以正常显示,只要使用string就可以了

追问
不懂了,我用你的方法不行。我用的是vs2012。
貌似陷入死循环了还是怎么的。本来test.txt只有几个字符,运行以后黑框什么也不显示,回车也关不掉,只好叉掉...。然后发现test.txt变成6M多了,全是空格。test.txt空,什么也没有
bd9006
2013-01-03 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
读test.txt进来,每两个字母转成16进制的char,转换完得到char[],就是中文的“总晓”。
再将这个char[] 写入test2.txt,即是中文。

#include <iostream>
#include <fstream>
using namespace std;

const int SIZE=128;
int char2num(char ch);

void main(){
ifstream file;
file.open("test.txt");
char str[SIZE]={0}; //赋初始值
file.read(str, SIZE); //读取文本内容到str数组
file.close();

int len=strlen(str);
char str2[SIZE];
int j=0, i, n;
for (i=0; i<len; i+=2){
n=char2num(str[i])*16+char2num(str[i+1]);
str2[j++]=n;
}
str2[j]=0;

cout<<"原文字:"<<str<<endl;
cout<<"转换后:"<<str2<<endl;

ofstream outFile;
outFile.open("test2.txt");
outFile.write(str2, j);
outFile.close();

cin.get();
}

int char2num(char ch){ /*将字符转成数字*/
if (ch>='a'){
return ch-'a'+10;
}else if (ch>='A'){
return ch-'A'+10;
}else{
return ch-'0';
}
}
追问
你的方法也对,但一楼的更简洁一些,谢谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友10c6f4b
2013-01-03 · TA获得超过613个赞
知道小有建树答主
回答量:1083
采纳率:100%
帮助的人:202万
展开全部
搞了半天,真难脱离直接调用C函数.
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
ifstream file("test.txt");
char *p=new char[2];
unsigned char c;
while(file.read(p,2)){
c=(unsigned char)strtoul(p,0,16);
cout<<c;
}
delete [] p;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友288ba2d
2013-01-03 · TA获得超过364个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:272万
展开全部
printf("%s","\xd7\xdc\xcf\xfe");转化成这个样子输出即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式