C/C++实战017:fstream读写文本操作详解
2021-02-05 12:16
标签:++ 执行 clu 函数 ring 读取数据 不同的 产品 文件流 .nc是数控程序文件的后缀,是辅助设计制造(CAD/CAM)时编程用的文件。里面包含了坐标系统,加工指令、辅助功能等,可以在生产过程中引导机床执行数控指令来完成产品的加工。今天要实现的功能是修改nc格式文件中的内容,查找程式中是否存在M30(主程序结束指令),如果存在则用M99替换,如果没有就在后面添加M99(结束子程式指令)。 C++ 为我们提供了一个标准库 fstream用于文件处理,只要一如头文件 C++程序中要使用一个文件,需要先要打开文件后才能读写,读写完后记得关闭文件。 而fstream类中打开文件可以使用open()方法:void open(const char* filename,int mode,int access),该提供了三个参数分别是打开的文件名、打开文件的方式、打开文件的权限。第一个参数必填,第二个参数默认ios::in|ios::out,第三个参数默认0(普通文件打开。 nc文件中的指令都是以行为分割的,这里我们就采用逐行读取的方式来读取文件,这里用到string类型所以需要引入#include 我们需要查找内容中是否存在M30指令,所以我们在读取到每行数据时要去判断该行中是否有我们需要的数据,这里我们得到的string类型数据,所以我们可以使用find方法来查找是否存在key,如果不存在则返回string::npos。如果你用的是char*可以使用strstr方法来实现字符串比对。 当我们找到了对应的字符串时接下来我们要做的就是将该字符串用M99指令替换掉,这个比较简单通过find找到该字符串所在的位置,然后通过replace方法将其替换掉即可。 这里需要注意的是传入的是指针而非字符串,否则更改的数据不会返回的原来的数据中的。 为了重写内容我们需要把拿到的数据临时存下,当文件中没有M30指令时我们需要往文本中添加M99指令,指令必须在%之前所以这里我们需要插入数据。这里我定义一个空字符串,然后通过append函数是向string的后面追加字符串,这样就把每行的数据进行了临时存储。添加“\n”是用来换行的,插入数据我们可以使用insert函数来实现。 读取完之后我们对内容进行的适当的修改,接下来就是将数据再次保存起来。文本文件的读写可以利用插入器(>)来进行进行写和读,保存内容实际就是将数据写入到文件中。这里需要注意的是我是新定义了一个save通过插入器(
更多C/C++实战技巧可参考:电商培训 淘宝学习网 C/C++实战017:fstream读写文本操作详解 标签:++ 执行 clu 函数 ring 读取数据 不同的 产品 文件流 原文地址:https://www.cnblogs.com/qilun/p/12787490.htmlfstream文件流
fstream打开文件
逐行读取文件
查找内容是否存在
内容替换
插入内容
保存内容
文章标题:C/C++实战017:fstream读写文本操作详解
文章链接:http://soscw.com/index.php/essay/51325.html