怎么把指针指向的字符串输出到二进制文件中

shaker881004 2008-04-11 10:30:14
把分割好的字符串写入文件。不能转化为固定长度的字符数组
这个程序要在linux下运行,因此要用标准c++。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
char cmd[]="hello world";
char separter[]=" ";
char *token;
char readFromFile[10];
token = strtok(cmd,separter);
cout<<token<<endl;

ofstream outfile("temp",ios::binary);
if(!outfile)
{
cerr<<"open error";
abort();
}
outfile.write((char*)&token,sizeof(&token));
outfile.close();
///////////////////////////////////
ifstream infile("temp",ios::binary);
if(!infile)
{
cerr<<"open error";
abort();
}
infile.read((char*)&readFromFile,sizeof(readFromFile));
cout<<readFromFile<<endl;
return 0;
}
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaker881004 2008-04-14
  • 打赏
  • 举报
回复
不知你们运行了没有,我运行的结果显示readFromFile是乱码.我觉得应该是把token指针的值写到文件中了,而不是token指向的字符串内容.
060 2008-04-12
  • 打赏
  • 举报
回复
同意楼上的回复:

// outfile.write((char*)&token,sizeof(&token));
int len = strlen(token);
outfile.write((char*)&len, sizeof(len));
outfile.write((char*)&token,len + 1);
outfile.close();



注意sizeof和strlen的区别。 sizeof是C/C++的关键字, 用来获得类型或变量的字节大小,对于同一类型的变量,它们的sizeof值是相等的。sizeof(&token)的值应该为4,因为使用"&"得到变量token的地址, "&token"就是一个指针,这个指针指向变量token。

strlen用来获得一个字符串的长度,原理就是判断'\0'的位置。
sinosinux 2008-04-12
  • 打赏
  • 举报
回复
#include  <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
char cmd[]="hello world";
char separter[]=" ";
char *token;
char readFromFile[10];
token = strtok(cmd,separter);
cout < <token < <endl;

ofstream outfile("temp",ios::binary);
if(!outfile)
{
cerr < <"open error";
abort();
}
// outfile.write((char*)&token,sizeof(&token));
int len = strlen(token);
outfile.write((char*)&len, sizeof(len));
outfile.write((char*)&token,len + 1);
outfile.close();
///////////////////////////////////
ifstream infile("temp",ios::binary);
if(!infile)
{
cerr < <"open error";
abort();
}
infile.read((char*)&len, sizeof(len));
infile.read((char*)&readFromFile,len + 1);
cout < <readFromFile < <endl;
return 0;
}

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧