c++实现两个文件的拼接。

时间:2022-10-22 23:12:03

  问题描述:

  要求把第二个文件拼接到第一个文件的末尾。 如把file2 拼接到 file末尾。 (直接复制一下不就行了嘛! 但是老师非让编程, 真是蛋疼!!,而且是闲的蛋疼!!!)。例如:

file1: I am not responsible of this code. They made me write it, against my will.   file2: When I wrote this, only God and I understood what I was doing. Now, God only kowns.   拼接后: file1: I am not responsible of this code. They made me write it, against my will. When I wrote this, only God and I understood what I was doing. Now, God only kowns.

知识点: 文件流类。

#include<iostream>
#include<fstream>
using namespace std; const int maxn = +; int main()
{
char str[maxn];
ifstream cin("file2.txt");
ofstream cout("file1.txt", ios::app);
while(cin.getline(str, maxn))
{
cout<<str<<endl;
}
return ;
}

一周内请勿抄袭! 以防作业雷同!

后面的题目也是我的作业题, 也都是关于I/0流的, 只不过比较水! I/0流是理解C++面向对象的典型例子之一, 所以在此也附上。

《2》使用I/O流, 以文本方式建立一个文件。并写入一串字符。

#include<iostream>
#include<fstream>
using namespace std; int main()
{
ofstream cout("file3.txt");
cout<<"该文件已成功建立!";
return ;
}
#include<iostream>
#include<fstream>
#include<string>
using namespace std; struct stu{
string num;
string name;
double score;
}Stu; int n; void judge(double a)
{
cout<<"成绩等级:";
if(a>=90) cout<<"优\n";
else if(a>=80) cout<<"良\n";
else if(a>=70) cout<<"中\n";
else if(a>=60) cout<<"及格\n";
else cout<<"不及格\n";
}
int main()
{
{//老是错,最后终于对啦, 原来是作用域的锅!!!
ofstream fc("stud.dat");
if(fc.fail())
{
cerr<<"error opening file\n";
return 0;
}
cout<<"请输入学生的总人数:\n";
cin>>n;
int T=n;
while(T--)
{
cout<<"请输入学生的学号 姓名 成绩\n";
cin>>Stu.num>>Stu.name>>Stu.score;
fc<<Stu.num<<" "<<Stu.name<<" "<<Stu.score<<" ";
}
}
ifstream cc("stud.dat");
while(n--)
{
cc>>Stu.num>>Stu.name>>Stu.score;
cout<<"学号:"<<Stu.num<<endl;
cout<<"姓名:"<<Stu.name<<endl;
cout<<"成绩:"<<Stu.score<<endl;
judge(Stu.score);
}
return 0;
}

《3》使用串流I/O的方式, 对字符串逐个读取。 如字符串“12345667899,,,,,”。

#include<iostream>
using namespace std; int main()
{
char c;
while(c=cin.get())
{
cout<<c<<endl;
}
return ;
}

《4》 输入一系列的数据(学号, 姓名, 成绩)存放在文件 stud.dat中, 输出这些学生的数据和相应的成绩等级(优, 良,,,,)。

这道题有细节性问题(气死我啦!!!)。

 #include<iostream>
#include<fstream>
#include<string>
using namespace std; struct stu{
string num;
string name;
double score;
}Stu; int n; void judge(double a)
{
cout<<"成绩等级:";
if(a>=) cout<<"优\n";
else if(a>=) cout<<"良\n";
else if(a>=) cout<<"中\n";
else if(a>=) cout<<"及格\n";
else cout<<"不及格\n";
}
int main()
{
{//老是错,最后终于对啦, 原来是作用域的锅!!!
ofstream fc("stud.dat");
if(fc.fail())
{
cerr<<"error opening file\n";
return ;
}
cout<<"请输入学生的总人数:\n";
cin>>n;
int T=n;
while(T--)
{
cout<<"请输入学生的学号 姓名 成绩\n";
cin>>Stu.num>>Stu.name>>Stu.score;
fc<<Stu.num<<" "<<Stu.name<<" "<<Stu.score<<" ";
}
}
ifstream cc("stud.dat");
while(n--)
{
cc>>Stu.num>>Stu.name>>Stu.score;
cout<<"学号:"<<Stu.num<<endl;
cout<<"姓名:"<<Stu.name<<endl;
cout<<"成绩:"<<Stu.score<<endl;
judge(Stu.score);
}
return ;
}

《5》 在二进制文件中写入三个记录(啥是记录?,百度解释: 记录:jì lù]

 

记录,汉语词语,把所见所闻通过一定的手段保留下来,并作为信息传递开去。

然而弱智的我并不能清楚的理解, 想哭!), 然后显示其内容。 然后删除第二个记录。 现在我以我的理解方式做题。我的理解: 就是删除第二个字符串。

下面的代码是推广版的, 不仅适用于多个记录, 而且能删减任意一个记录。

 #include<iostream>
#include<fstream>
#include<string>
using namespace std; string str, str2;
int n = ; //可以更改, 以便满足多个记录的情况 int main()
{
{
ofstream fc("data.dat");
if(fc.fail())
{
cerr<<"error opening file\n";
return ;
} cout<<"请依次输入3个记录\n";
for(int i=; i<=n; i++)
{
cin>>str;
fc<<str<<" ";
}
}
cout<<"输入你要删除的记录:\n";
cin>>str2;
{
ifstream cc("data.dat");
cout<<"~~未删减版\n\n";
for(int i=; i<=n; i++)
{
cc>>str;
cout<<str<<endl;
}
}
{
ifstream cc("data.dat");
cout<<"~~删减版,广电总局的锅!\n\n";
for(int i=; i<=n; i++)
{
cc>>str;
if(str!=str2)cout<<str<<endl;
}
}
return ;
}

《6》删除 文件里注释

哎!最近在看“紫书”, 发现作者的代码库中的代码是有不少是用中文写的, 你知道的, 当我用cpp的格式打开的时候, 中文全部变成了乱码, 一大波的乱码。 对于十分看重代码“长相”的我当然不能忍受。 谁敢*我神圣的代码, 谁? 我就问一句, 他妈的还有谁?。所以,我就一不做, 二不休, 删除了所有的注释。但是一行一行的删实在是太SB啦, 于是乎, 我就写了下面的小程序。

删除 文件里注释的代码。

 #include<iostream>
#include<cstring>
#include<fstream>
using namespace std; const int MAXN = +;
char s[MAXN]; int main()
{
int i, len, flag=;//控制文件结束的标志
ifstream cin("file.cpp");
ofstream cout("file2.cpp");
while()
{
cin.getline(s, MAXN);
len = strlen(s);
if(len==)
{
flag++;
if(flag==) break;//这里表示,当连续出现两个空行时,文件结束。
}
else flag = ;
for(i=; i<len; i++)
{
if(s[i]==s[i+]&&s[i]=='/')
break;
}
for(int j=; j<i; j++)
cout<<s[j];
if(i!=)cout<<endl;
}
return ;
}

《7》提取文件里的注释。

等我删完注释, 我那个成就感啊, 简直就是爽的,,,,,。 然而, 问题很快就来啦。你们知道:“草滩小恪”--就是在下。是一个名副其实的菜鸟。 “紫书”上的代码大都具有很巧妙地技巧。 如果没有注释,渣渣的,弱弱的, “草滩小恪”怎么可能看懂嘛!。所以“草滩小恪”一直想破译乱码。然而, 微软早已看穿了一切。原来, “草滩小恪”无意中发现,用记事本直接打开cpp源文件, 里面的注释竟然不是乱码(记事本功能强大, 请有兴趣者自行google)。 于是懒惰的“草滩小恪”希望把txt文件里面的注释都提取出来。

于是下面的程序横空出世!

 //提取注释
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std; const int MAXN = +;
char s[MAXN]; int main()
{
int i, len, flag=;//控制文件结束的标志
ifstream cin("file1.txt");
ofstream cout("file.cpp");
while()
{
cin.getline(s, MAXN);
len = strlen(s);
if(len==)
{
flag++;
if(flag==) break;//这里表示,当连续出现两个空行时,文件结束。
}
else flag = ;
for(i=; i<len; i++)
{
if(s[i]==s[i+]&&s[i]=='/')
break;
}
for(int j=i; j<len; j++)
cout<<s[j];
if(i!=len)cout<<endl;
}
return ;
}

c++实现两个文件的拼接。的更多相关文章

  1. 比较两个文件不同以及生成SQL插入语句

    Tips 做一个终身学习的人! 日拱一卒,功不唐捐. 今天有个小小的需求,具体需求是这样的: 有两个文本文件,每个文件都有一些字符串文本: 比较第一个文件中,在第二个文件中,不存在的字符串文本: 把这 ...

  2. Python 将两个绝对路径拼接

    import os def two_abs_join(abs1, abs2): """ 将 绝对路径将两个绝对路径拼接, 就是将第二个的开路径(windows 的 C, ...

  3. putty提供的两个文件传输工具PSCP、PSFTP详细介绍

    用 SSH 来传输文件 PuTTY 提供了两个文件传输工具 PSCP (PuTTY Secure Copy client) PSFTP (PuTTY SFTP client) PSCP 通过 SSH ...

  4. diff 比较两个文件的差异

    功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对 ...

  5. Linux下对比两个文件夹的方法

    最近拿到一份源代码,要命的是这份源代码是浅克隆模式的git包,所以无法完整显示里面的修改的内容. 今天花了一点点时间,找了一个在Linux对比两个文件夹的方法. 其实方法很简单,用meld 去对比两个 ...

  6. PHP两个文件的相对路径

    /** * relativePath 计算两个文件的相对路径 * @param file1 参作为考路径 * @param file2 相对于$file1的路径 */ function relativ ...

  7. linux 两个文件合并

    可以使用cat命令,有两种实现的方式,一种将两个文件合并的到一个新的文件,另一种将一个文件追加到另一个文件的末尾. 方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件.这种方法可以 ...

  8. linux两个文件修改主机名

    linux修改主机名的方法 用hostname命令可以临时修改机器名,但机器重新启动之后就会恢复原来的值. #hostname   //查看机器名#hostname -i  //查看本机器名对应的ip ...

  9. 比较两个文件文件可以使用MD5比较工具

    举例来说,当我们对一个设备进行升级. 固件程序是一个文件,而我们发送的数据可以组成一个文档, 实质是把这两个文件拖入到下图中的工具中,查看一下MD5值.SHA1值.CRC32的值,如果值都一样说明这两 ...

随机推荐

  1. 为什么模板函数的声明和实现都放在&period;h文件中

    当你不使用这个模板函数或模板类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义.所以都放在 ...

  2. 《NoSQL精粹》思维导图读书笔记

    <NoSQL精粹>思维导图读书笔记 各主题笔记 这本书短小精悍,虽不能解答所有NoSQL疑问,但在读书过程中会抛给你不少未曾想过的问题,给人以更深入的思考: 这里对每一个主题分别做了笔记: ...

  3. jquery的匿名函数研究

    jQuery片段: ? 1 2 3 ( function (){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在 ...

  4. Handoff使用指南 - 理论篇

    Handoff简介 Handoff是iOS 8 和 OS X v10.10中引入的功能,可以让同一个用户在多台设备间传递项目.In iOS 9 and OS X v10.11 支持了Spotlight ...

  5. bug记录&lowbar;signalr执行&dollar;&period;connnection&period;testhub结果为空

    最后发现配置文件<appSettings>中多了一句<add key="owin:AutomaticAppStartup" value="false&q ...

  6. MyBatis 多个查询条件的传递

    <!-- 方法1,构建查询对象: QueryCondition qc = new QueryCondition(); qc.setGender(1); qc.setBirthday(new Da ...

  7. ConcurrentHashMap、synchronized与线程安全

    明明用了ConcurrentHashMap,可是始终线程不安全, 下面我们来看代码: public class Test40 { public static void main(String[] ar ...

  8. Linux启动&sol;停止&sol;重启Mysql数据库

    1.查看mysql版本 1)status; 2)select version(); 2.Mysql启动 1)使用 service 启动: service mysqld start (5.0版本是mys ...

  9. java、python与留下迷点的php hash collision

    JAVA 生成java的碰撞数据比较简单 根据网上资料可知: at,bU,c6的在java中的hash值是相同的 则可以根据这三个不断做 笛卡尔积 简单明了就是做字符串拼接. 举个例子 把A当做at, ...

  10. commons-text StrBuilder字符串构建工具类例子

    package com.skylink.junge.demo; import java.util.ArrayList; import java.util.List; import org.apache ...