fstream的用法,急急急

tananade 2010-06-15 12:01:05
我今天用fstream写一个可写入文件的函数,我本想用fstream先定位要写入的位置,然后在那个位置写入数据
但是我发现用fstream读文件以后,就不能写,不知道什么原因,希望大家帮帮忙解决一下,分不多
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;

void write_in_text(const string &str)
{
int num1, num2; char ch;
string textline;
istringstream message_stream(str);
message_stream >> num1;
fstream in_outfile;
in_outfile.open("11.txt", fstream::in | fstream::out | fstream::binary);
while(getline(in_outfile, textline))
{
message_stream.str(textline);
message_stream >> num2;
if(num1 == num2)
{
cout << "编号\'" << num1
<< "\'已存在, 是否要覆盖?(Y/N)"
<< endl;
if((ch = cin.get()) == 'Y' || ch == 'y')
{
cout << str;
in_outfile << str;
in_outfile.close();
}
return;
}
else if(num1 < num2+1)
{
in_outfile << str;
in_outfile.close();
return;
}
}
in_outfile << str;
in_outfile.close();
}

int main()
{
int num;
string str = "3 asdkjfkgf";
write_in_text(str);
return 0;
}


文件里面的数据时分一行行的,第一个都是序号,从小到大,如:13 dkajfafdasf...之类的,我是想通过序号先定位,然后再该位置写入数据,程序还不完善,这只是一部分,是为了大家好运行才单独弄出来的。希望大家能谅解。。。
...全文
240 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
山椒π 2010-06-27
  • 打赏
  • 举报
回复
记录下
cq_yanglin 2010-06-15
  • 打赏
  • 举报
回复
定义写入文件应该是:ofstream fout(" hadf.txt");
mstlq 2010-06-15
  • 打赏
  • 举报
回复
http://www.cplusplus.com/reference/iostream/ostream/seekp/
tananade 2010-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mstlq 的回复:]
读完后,写之前,先用一下seekp(0,ios::cur)
[/Quote]

这是什么函数?
mstlq 2010-06-15
  • 打赏
  • 举报
回复
读完后,写之前,先用一下seekp(0,ios::cur)
tananade 2010-06-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ftell 的回复:]
这一行,
in_outfile.open("11.txt", fstream::in | fstream::out | fstream::binary);
书上写的 ios::in | ios::out | ios::binary
[/Quote]

没用,一样的结果
tananade 2010-06-15
  • 打赏
  • 举报
回复
没有人看吗?悲剧~~~
tananade 2010-06-15
  • 打赏
  • 举报
回复
该结贴了~~~
ForestDB 2010-06-15
  • 打赏
  • 举报
回复
去读reference。
cattycat 2010-06-15
  • 打赏
  • 举报
回复
seekp定位函数。
lin49940 2010-06-15
  • 打赏
  • 举报
回复
用ios::in 和 fstream::in 是一样的, 因为 in 是 ios 类中的枚举open_mode 的枚举变量, 枚举open_mode 是public 的, fstream 是 ios 的子类, 所以fstream 能访问枚举变量 in, 其他 out, ate 之类都是一样的道理.
你觉得 fstream 和 ios 哪个写起来简单点呢? 《C++ primer》上用 fstream::out 的地方是因为正好讲的是fstream 相关的知识, 如果讲的是ofstream, 它还用 ofstream::out 呢!
tananade 2010-06-15
  • 打赏
  • 举报
回复
C++ primer 里面找到了这函数,在附录里面,当时只大概浏览了一下,这下亏了....
tananade 2010-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mstlq 的回复:]
http://www.cplusplus.com/reference/iostream/ostream/seekp/
[/Quote]

Thanks, 这个问题解决了,网站也很好,收藏了
虽然对里面的函数有点陌生,但是会慢慢学的

不过还有个问题,读完后,写之前,先用一下seekp(0,ios::cur);这里0代表的是什么?肯定还有别的值吧?
分别代表什么意思,有没有列表,我查了下MSDN,没找到,希望能帮下忙,还有fstream是从iostream那里继承来的,那到底用哪个好些呢?fstream::还是ios::,我看到你们都用ios::,但是C++ primer上用的是fstream::
望回答,不胜感激

64,662

社区成员

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

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