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...之类的,我是想通过序号先定位,然后再该位置写入数据,程序还不完善,这只是一部分,是为了大家好运行才单独弄出来的。希望大家能谅解。。。
...全文
284 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::
望回答,不胜感激
源码下载地址: https://pan.quark.cn/s/0d6e3002ba51 ### IR2110中文资料知识点详述 #### 一、概述 IR2110是一种专为脉冲宽度调制应用而设计的高性能驱动集成电路,在各类功率转换设备中具有广泛的应用,特别是在需要实现隔离驱动的场景下表现出色。该芯片融合了光电隔离与电磁隔离的优势,能够达成快速响应并保持较小的物理尺寸,尤其适合用于中小功率的变换装置。 #### 二、IR2110内部结构与特点 **1. 内部结构** - **封装形式**:采用DIP14引脚封装。 - **内部组成**:由逻辑输入单元、电平平移单元以及输出保护单元这三个主要部分构成。 - **悬浮电源**:借助自举电路实现,使得高端工作电压最高能够达到500V,支持±50V/ns的电压变化率。 - **工作电压范围**:逻辑电源电压范围为5~15V,输出电源端电压范围为10~20V,易于与其他逻辑电平进行匹配。 - **工作频率**:最高可达到500kHz。 - **功耗**:在15V条件下静态功耗仅为116mW。 - **延迟时间**:导通延迟120ns,关断延迟94ns。 - **峰值输出电流**:图腾柱输出峰值电流为2A。 **2. 特点** - **独立输入通道**:具备独立的低端和高端输入通道配置。 - **兼容性**:逻辑电源地与功率地之间允许±5V的偏移量,便于与TTL或CMOS电平进行匹配。 - **自举电源**:内置自举电源电路,有效减少驱动电源的数量,从而简化电路设计。 - **高dv/dt能力**:具有较强的dv/dt抑制能力,适合高频开关应用。 - **低功耗**:工作状态下功耗较低,有利于提升整体效率。 #### 三、高压侧...

65,210

社区成员

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

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