C++如何删除多行文件中的其中一行?

oowangoo 2010-07-11 04:20:43
如题。。。 求答案
...全文
1381 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starcat 2010-07-12
  • 打赏
  • 举报
回复
楼主的意思恐怕是想直接在文件中把那行comment out掉(//),如需涉及到移动的话,那效率肯定降低
zhh_kv 2010-07-12
  • 打赏
  • 举报
回复
up~~~~~~~~~~~~~~~~~~~
yanran_hill 2010-07-12
  • 打赏
  • 举报
回复
记得十几年前,似乎“C程序设计”有教学案例,说是声明2个文件描述符变量fp1,fp2,一个读方式打开,一个写方式打开,读fp1的前N-1行,写到fp2,然后fp1跳一行,再写剩余数据到fp2.最后把文件名换回来。
如果不考虑效率的话,因该还算可行吧,诸位觉得如何?
yanran_hill 2010-07-12
  • 打赏
  • 举报
回复
直接针对文件进行存取,是影响效率的方法,如果文件不大,应该是把文件完整的读到内存中,在内存中进行处理,那时要删除哪一行应该是很容易的,最后再把数据写到文件就成了
tjsinor2008 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yunyun1886358 的回复:]
C/C++ code

#include <fstream>
#include <string>

using namespace std;

int main()
{
vector<string> vecContent;
string strLine;
ifstream inFile("e:\\test.txt");
while (inFi……
[/Quote]
up
ForestDB 2010-07-11
  • 打赏
  • 举报
回复
友情帮顶。
cs_yagami 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yunyun1886358 的回复:]

C/C++ code

#include <fstream>
#include <string>

using namespace std;

int main()
{
vector<string> vecContent;
string strLine;
ifstream inFile("e:\\test.txt");
while (inFile)
{
……
[/Quote]
哈~這招真是個好辦法,把內容存在容器裡,然後刪除再回寫就可以了
wyz007134 2010-07-11
  • 打赏
  • 举报
回复
用空格或者换行替换?
yunyun1886358 2010-07-11
  • 打赏
  • 举报
回复

#include <fstream>
#include <string>

using namespace std;

int main()
{
vector<string> vecContent;
string strLine;
ifstream inFile("e:\\test.txt");
while (inFile)
{
getline(inFile, strLine);
vecContent.push_back(strLine);
}
inFile.close();

// 删除第一行
vecContent.erase(vecContent.begin());

ofstream outFile("e:\\test.txt");
vector<string>::const_iterator iter = vecContent.begin();
for (; vecContent.end() != iter; ++iter)
{
outFile.write((*iter).c_str(), (*iter).size());
outFile << '\n';
}

outFile.close();

return 0;
}
dinjay 2010-07-11
  • 打赏
  • 举报
回复
手动吧....这个意义不大,与其说删除指定的行,还不如你在写文件的时候格式都定义好
qinken547 2010-07-11
  • 打赏
  • 举报
回复
文件更新时即写入的时候不写进那一行就够了.......
arong1234 2010-07-11
  • 打赏
  • 举报
回复
没有办法直接删除,你只能把后面的文件内容拷贝到这里覆盖它
PilotEdit是国公司开发的功能强大的文件编辑器。PilotEdit破解版包含了文本编辑、HEX编辑、FTP上传下载、文件目录比较、基于正则表达式的查找和替换以及加密解密等诸多功能为一体的软件。软件界面友好,功能强大,是一款非常不错的软件。   1、PilotEdit支持超过400G的文件   >编辑超过400GB(400亿行)的文件   >上传/下载超过4G的FTP文件   >加密/解密超过4G的文件   >比较超过4G的文件   2、全面支持UNICODE文件和DOS/UNIX文件   >快速改变多个文件的编码   >在不同编码的文件拷贝文字时自动调整文字编码   3、自定义的文件类型和关键字高亮显示   >支持超过20种文件类型   >支持自定义文件类型   >对不同的文件类型定义不同的TAB和缩进   比如,您可以定义当用户按TAB键时,在C/C++输入TAB键,而在Java文件输入四个空格   4、十六进制编辑模式   >在十六进制编辑模式可以很方便地插入,修改,删除,拷贝,粘贴   >十六进制编辑模式查找和替换   >当从十六进制编辑模式切换回文本模式时自动检测文件类型   >在十六进制编辑模式和文本模式无限的undo/redo   5、列模式   >键盘输入的字符将被插入到列模式所有选的行   >如果粘贴一行文字,这行文字将被插入到列模式所有选的行   >如果粘贴多行文字,这些文字将被逐行被插入到列模式的行   6、无限的undo/redo   >在十六进制编辑模式和文本模式切换后仍然可以无限次地undo/redo   7、回行显示   >即便在编辑一个几百MB的文件时,切换到回行显示仍然非常迅速   8、编辑FTP文件   >打开和保存FTP文件   >删除多个FTP文件和目录   >上传/下载多个FTP文件和目录   9、基于多行的查找和替换   >查找/替换多行文本   >用正则表达式查找/替换多行文本   10、文件比较和合并   >比较两个基本点目录   >比较合并两个文件   >在文件比较窗口直接编辑文件   >当文件内容改变时文件比较窗口自动更新比较结果   >在文件比较窗口查找/替换   >查找上一个/下一个不同的文本块   >将所有相同/不同的行拷贝到剪贴板。通过这个功能,我们可以很方便地找出第一个文件存在而第二个文件不存在的行   11、自定义字符串表   >单击即可添加一个自定义的字符串   >在所选文本的前后分别添加自定义的字符串   12、正则表达式   >用正则表达式查找/替换多行文本   13、脚本文件   >可以把常用的正则表达式定义在脚本,直接运行脚本即可替换文字   14、256位 AES加密/解密   >用PilotEdit直接透明地编辑一个加密的文件   >加密/解密多个文件和目录   >加密/解密超过4G的文件   15、文件组   >双击文件组可以快速打开多个文件   16、在多个目录查找/替换   >支持多行的查找/替换   17、排序   >按升序/降序排序   >按文本或数字排序   >按一列数据排序   >按正则表达式排序   18、查找/删除重复的行   >在打开的文件查找/删除重复的行   >按文本或数字比较   >按一列数据比较   >按正则表达式比较   19、收集字符串   >将匹配正则表达式字符串拷贝到的剪贴板。比如,我们可以把一个文件所有的Email地址拷贝到剪贴板。   20、将打开的文件用原目录结构另存为新文件   >同时拷贝选文件和目录结构   21、编辑SFTP文件   >打开和保存SFTP文件   >删除多个SFTP文件和目录   >上传/下载多个SFTP文件和目录

64,676

社区成员

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

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