C++怎么把文件读取成16进制的,显示出来,或者16进制的写入文件.
6个回答
展开全部
#include <iostream>
#include <fstream>
#include <cassert>
#include <string>
#include <vector>
using namespace std;
class stu{
public:
int no;
int score;
};
vector<stu> ss;
void readFromFile();
void writeToFile();
void inputData();
int main()
{
inputData();
writeToFile();
readFromFile();
for(int i=0;i<ss.size();i++)
{
cout<<ss[i].no<<" "<<ss[i].score<<endl;
}
return 0;
}
void inputData() //从屏幕获取数据
{
int score;
int no;
string str;
do{
stu st;
cout<<"Enter you no : ";
cin>>st.no;
cout<<"Enter you score : ";
cin>>st.score;
ss.push_back(st); //存入学生管理向量
cout<<"是否继续输入数据:";
cin>>str;
}while(str=="Y"||str=="y");
}
void readFromFile() //从文件中读取数据
{
string filename;
cout<<"Enter the readFile name : ";
cin>>filename;
ifstream infile;
infile.open(filename.data()); //将文件流对象与文件连接起来
assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行
for(int i=0;;i++)
{
stu st;
infile>>hex>>st.no>>st.score;
if(infile.eof())break; //到文件末尾,即不在读取
ss.push_back(st);
}
infile.close(); //关闭文件输入流
cout<<"The Data Input Succeed!\n";
}
void writeToFile() //输出到文件中
{
string filename;
cout<<"Enter the outFile name : ";
cin>>filename;
ofstream outfile;
outfile.open(filename.data());
assert(outfile.is_open()); //失败,则终止程序,并打印错误消息
for(int i=0;i<ss.size();i++)
{
outfile<<hex<<ss[i].no<<" "<<ss[i].score<<endl;
}
outfile.close(); //关闭输出流对象
cout<<"The Data Output Succeed!\n";
}
上述代码在vc++6.0测试通过 满足你的要求 有问题hi我
#include <fstream>
#include <cassert>
#include <string>
#include <vector>
using namespace std;
class stu{
public:
int no;
int score;
};
vector<stu> ss;
void readFromFile();
void writeToFile();
void inputData();
int main()
{
inputData();
writeToFile();
readFromFile();
for(int i=0;i<ss.size();i++)
{
cout<<ss[i].no<<" "<<ss[i].score<<endl;
}
return 0;
}
void inputData() //从屏幕获取数据
{
int score;
int no;
string str;
do{
stu st;
cout<<"Enter you no : ";
cin>>st.no;
cout<<"Enter you score : ";
cin>>st.score;
ss.push_back(st); //存入学生管理向量
cout<<"是否继续输入数据:";
cin>>str;
}while(str=="Y"||str=="y");
}
void readFromFile() //从文件中读取数据
{
string filename;
cout<<"Enter the readFile name : ";
cin>>filename;
ifstream infile;
infile.open(filename.data()); //将文件流对象与文件连接起来
assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行
for(int i=0;;i++)
{
stu st;
infile>>hex>>st.no>>st.score;
if(infile.eof())break; //到文件末尾,即不在读取
ss.push_back(st);
}
infile.close(); //关闭文件输入流
cout<<"The Data Input Succeed!\n";
}
void writeToFile() //输出到文件中
{
string filename;
cout<<"Enter the outFile name : ";
cin>>filename;
ofstream outfile;
outfile.open(filename.data());
assert(outfile.is_open()); //失败,则终止程序,并打印错误消息
for(int i=0;i<ss.size();i++)
{
outfile<<hex<<ss[i].no<<" "<<ss[i].score<<endl;
}
outfile.close(); //关闭输出流对象
cout<<"The Data Output Succeed!\n";
}
上述代码在vc++6.0测试通过 满足你的要求 有问题hi我
展开全部
以二进制方式读或写就可以了,二进制和十六进制的区别就是4个二进制数就是一个16进制数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的方法就是二进制写入文件。just look here
写:
FILE* fp;
fp = fopen(filename, "w");
int a=0x1B;
if(fwrite(&a, sizeof(a), 1, fp) != 1)
{
perror("fwrite error");
}
读
FILE* fp;
fp = fopen(filename, "r");
int b;//这个要统一同样的类型哦。
if(fread(&b, sizeof(b), 1, fp) != 1)
{
perror("fwrite error");
}
这个时候你的b=0x1B;
反正你按什么顺序写进去的,就怎么读。
你可以一次写个整数数组,到时候直接读出来不要做任何处理就是那个值了。
也可以是结构体。ok it's over
写:
FILE* fp;
fp = fopen(filename, "w");
int a=0x1B;
if(fwrite(&a, sizeof(a), 1, fp) != 1)
{
perror("fwrite error");
}
读
FILE* fp;
fp = fopen(filename, "r");
int b;//这个要统一同样的类型哦。
if(fread(&b, sizeof(b), 1, fp) != 1)
{
perror("fwrite error");
}
这个时候你的b=0x1B;
反正你按什么顺序写进去的,就怎么读。
你可以一次写个整数数组,到时候直接读出来不要做任何处理就是那个值了。
也可以是结构体。ok it's over
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ofstream outf("c:\\test.txt", ios::out) ;
outf << hex << 16 ;
楼主说的是这样吗?
outf << hex << 16 ;
楼主说的是这样吗?
追问
你再多举一些例子我就给你分..
比如读取.
,还有一些指针SEEK之类的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-02-24
展开全部
ofstream outf("c:\\test.txt", ios::out) ;
outf << hex << 16
outf << hex << 16
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询