鱼C论坛

 找回密码
 立即注册
查看: 4394|回复: 4

c++怎么覆盖文本文件中指定字符

[复制链接]
发表于 2013-8-6 22:05:35 | 显示全部楼层 |阅读模式
1鱼币
#include<iostream>
#include < fstream >
#include"head.h"
#include<string>
using namespace std;
//-----------------------------删除学生---------------------
void delstudent()
{   system("cls");
    string num;
    STU stu[50];  
    ifstream in("test.txt",ios::in);

    for(int i=0;i<50;i++)
        in>>stu[i].num>>stu[i].subject;
cout<<"输入您要删除的学号:"<<endl;
   cin>>num;
    for(int a=0;a<50;a++) {
        if(num == stu[a].num) {stu[a].num=" ";           in.close();      ofstream ou("test.txt",ios::app);ou<<stu[a].num.cs_str();        cout<<"删除成功"<<endl;
           stu[a].num=" ";

};

} ;

我想用空格来覆盖掉数字来达到删除功能,单怎么覆盖不了啊,数字还是在的啊就是要怎么覆盖指定的数据 //这个是查询要覆盖的学号
cout<<"输入您要删除的学号:"<<endl;
   cin>>num;
    for(int a=0;a<50;a++) {
        if(num == stu[a].num) {cout<<"删除成功"<<endl;
           stu[a].num=" ";

};

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-6 23:52:49 | 显示全部楼层
额。。。c++的这个fstream我不太熟悉,看着是打开文件读取数据用的。

不过,我看你的程序逻辑貌似有点问题,
只有这个if(num == stu[a].num)成立的时候,才会执行下面的替换和写入文件的操作,而且只写入一个空格。
言外之意,也就是num != stu[a].num 的时候,是不会写入的。

所以就明了了,你写入的时候,只在文件后面追加一个空格,而其他的情况都不写入,所以你的文件中的内容是不会变的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-7 00:03:04 | 显示全部楼层
补充一下,就算你写了,也是往后写,而不是覆盖吧~~~~
fstream的语法我不太懂,不过刚才我测试了一下,貌似是往后写,不是覆盖
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-7 09:21:00 | 显示全部楼层
要使用seekp方法,将文件指针指向文件中
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-7 10:57:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 02:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表