C++ 文件和流 技术教程文章

7.字符串、异常处理、文件和流(C++学习笔记)【图】

C++字符串 C++错误处理 在C++中,异常是在运行时抛出的事件或对象。 所有异常都派生自std::exception类。 它是一个可以处理的运行时错误。 如果我们不处理异常,它就会打印异常消息并终止程序。 C++异常处理关键字 在C++中,我们使用3个关键字来执行异常处理:try catch throw C++用户定义异常 C++中不存在的新异常,可以通过重写和继承异常类功能来定义。 ? ?C++文件和流 在C++编程中,我...

怎么查看so库文件中的函数 C++与C调用so文件

在shell命令行: 1、nm -D xxx.so 2、readelf -s xxx.so 3、objump -tT xxx.so 1.制作so文件:libadd_c.so add.c: int add(int a, int b){ return a + b;}编译: gcc -shared -fpic -lm -ldl -o libadd_c.so add.c 2.编写测试函数 test.cpp #include <stdio.h>#include <dlfcn.h>#include <stdlib.h>#include <iostream>using namespace std;int main(){ int a = 0; void *handle = dlopen("./libadd_c.so", RTLD_LAZY); if(!h...

【C++进阶之路】C++防止头文件被重复引入的3种方法!【图】

在之前我们详细介绍了 C 语言中如何使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用。 举个例子,如下是一个 C++ 项目,其内部含有 school.h 和 student.h 这 2 个头文件以及 main.cpp 源文件,其各自包含的代码为://student.h class Student { //...... }; //school.h #include "student.h" class School { //...... private: Student stu[50]; }; //...

MFC vc++ 写 word 文件,mswoord.cpp文件(1)【代码】【图】

msword.h文件太大分成多个上传 11 // Machine generated IDispatch wrapper class(es) created with ClassWizard2 3 #include "stdafx.h"4 #include "msword.h"5 6 #ifdef _DEBUG7 #define new DEBUG_NEW8 #undef THIS_FILE9 static char THIS_FILE[] = __FILE__;10 #endif11 12 13 14 /////////////////////////////////////////////////////////////////////////////15 // _Application properties16 17 ///////////////////////...

VC++-删除文件夹以及它里面的所有文件或文件夹【代码】【图】

版本VS2012 源代码 #include <string>using namespace std;/*删除文件夹以及它里面的所有文件或文件夹 */ bool RemoveDir(const char* szFileDir) {std::string strDir = szFileDir;if (strDir.at(strDir.length() - 1) != \\)strDir += \\;WIN32_FIND_DATA wfd;HANDLE hFind = FindFirstFile((strDir + "*.*").c_str(), &wfd);if (hFind == INVALID_HANDLE_VALUE)return false;do{if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIR...

C++ 文件操作【代码】

文件操作 文本文件 操作文件三大类ofstream:写文件 ifstream:读文件 fstream:读写文件打开文件的模式:模式标志 描述ios::app 追加模式。所有写入都追加到文件末尾。ios::ate 文件打开后定位到文件末尾。ios::in 打开文件用于读取。ios::out 打开文件用于写入。ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。ins::binary 以二进制方式打开。可以把以上两种或两种以上的模式结合使用。例如...

C++之文件操作【代码】

函数原型 BOOL DeleteFile(LPCTSTR lpFileName //要删除的文件名 );BOOL CopyFile(LPCTSTR lpExistingFileName,//现有的文件名LPCTSTR lpNewFileName//目标新文件名BOOL bFailIfExists//true&文件已存在,则失败,false&新文件已存在则成功(覆盖文件) );BOOL MoveFile(LPCTSTR lpExistingFileName,//现有的文件名LPCTSTR lpNewFileName//目标文件名 );核心代码if (0 == lstrcmp(L"-d", argv[1]) && argc == 3) {if (!DeleteFi...

C++程序编译之谜(一)——多文件编译的奇怪现象【代码】【图】

1、奇怪的现象 在C++多文件编译的时候,很多人都会经常碰见这样的一种情况,在一个cpp文件中调用另一个cpp文件的函数,那么可以直接调用吗?我们来做个试验。 有以下三个文件main.cpp,cal.h,cal.cpp1 //main.cpp 2 #include <stdio.h> 3 #include "cal.h" 4 int main(int argc, char *argv[]) 5 { 6 printf("add(5,4) is %d\n", add(5, 4)); 7 return 0; 8 } 1 //cal.h 2 #include <stdio.h> 3 int add(int x, int y); 1...

Cmake知识----编写CMakeLists.txt文件编译C/C++程序【代码】

Cmake知识----编写CMakeLists.txt文件编译C/C++程序 1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))。因此CMake的编译基本就两个步骤: 1. cmake 2. makecmake 指向CMakeLists.txt所在的目录,例如cmake … 表示CM...

C++核心准则​NR.4:不要坚持将每个类声明放在其自己的源文件中【代码】【图】

NR.4: Dont insist on placing each class declaration in its own source file NR.4:不要坚持将每个类声明放在其自己的源文件中 Reason(原因) The resulting number of files from placing each class in its own file are hard to manage and can slow down compilation. Individual classes are rarely a good logical unit of maintenance and distribution. 将每个类放在自己的文件中而产生的文件数量很难管理,并且可能减...

C++文本操作文件-读、写文件

文件操作程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化--------------------------C++中对文件操作需要包含头文件<fstream> 文件类型分为: 文本文件:文件以文本的ACSII码形式存在在计算机中 二进制文件:文件以文本的形式存在计算机中 操作类文件的三大类:ofsteam:写操作output(输出)ifsteam:读操作input(输入)fsteam:读写操作 文本文件: 写文件步骤如下: 1.创建一个头文件 #in...

VC++实现文件加解密功能(附使用demo)【图】

采用 Blowfish对文本文档进行加解密功能 Blowfish是一个对称加密块算法,是1993年有Bruce Schneider设计的,现已应用在多种加密产品。Blowfish能保证很好的加密速度,并且目前为止没有发现有效地破解方法。目前为止AES比Blowfish有更广的知名度。Schneider 设计的Blowfish算法用途广泛,意在摒弃DES的老化以及其他算法的强制捆绑。Blowfish刚刚研发出的时候,大部分其他加密算法是专利所有的活商业(政府)机密,所以发展起来非常受限...

C++的一些头文件【代码】

C++的一些头文件: 1.万能头文件: #include<bits/stdc++.h>(这个头文件会占有大量的时间,经常会导致TLE)慎用 2.数据流输入/输出:cin>>,count<<的头文件:#include<iostream.h> 3.算法类函数sort()…的头文件:#include<algorithm.h> 4.各个数学函数:max(),min(),sqrt()…的头文件: #include<math.h>/#include<cmath.h> 5.字符串操作的头文件: #include<string> / #include<string.h>6.结构类:链表,图,队列,迭代器,栈...

C++之分文件编写【代码】【图】

函数分文件编写 创建.h .cpp的头&源文件 在.h头文件内写函数的声明,在.cpp源文件内写函数的定义 文件结构如下:案例代码://add.h #include<iostream> using namespace std;void add(int a, int b); //此处仅声明函数//add.cpp //cpp中对函数进行定义 #include "add.h"void add(int a, int b) {int sum ;sum = a + b;cout << "sum" << sum << endl; }//main #include<iostream> #include<string> #include "add.h" // 直接调用s...

C++读取一个文件下所有文件【代码】

读取所有文件 #include<iostream> #include<string> #include<vector> #include<io.h> using namespace std; void getFiles(string path, vector<string>&files) {//文件句柄//千万不要用long,运行的时候会暴内存异常 要用intptr_tintptr_t hFile = 0;//文件信息struct _finddata_t fileinfo;string p;if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1){do{if ((fileinfo.attrib &_A_SUBDIR)){//...

C++读txt文件(由CSV文件转换成的txt)【代码】【图】

C++读txt文件(由CSV文件转换成的txt) txt中的数据以,分隔 txt示例: 代码如下: int main() {//txth_num:txt的行数//9:txt的列数vector <vector <double> >arr(txth_num, vector<double>(9));string filepath = "D:/.../***.txt";readTxt0(filepath, arr);... }void readTxt(string file, vector<vector<double>>& arr) {ifstream ifs(file, ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}for (int i =...

C++之文件操作探究(四):读文件——二进制文件【代码】【图】

??以二进制的方式对文件进行读写操作; ??打开方式要指定为 ios::binary 读文件 ??二进制方式读文件主要利用流对象调用成员函数read; ??函数原型:istream& read(char?\ast? buffer,int len); ??参数解释:字符指针buffer指向内存中一段储存空间。len是读写的字节数; 文件打开方式注意:文件打开方式可以配合使用,利用“|”操作符 例如:用二进制方式写文件 ios::binary | ios::out 例1: 附例1代码: //小问学编程 #include<...

C++.h文件和.cpp文件连接不上 ,1 个无法解析的外部命令

转发自这位老哥 :https://blog.csdn.net/weixin_40676516/article/details/84643105 ,调试几天代码,竟然因为在cpp中加了inline而一直没有编译通过,真痛苦,不得不怀疑自己,看了这篇博客,才不由得恍然大悟,感谢博主!!!! 解决方法一:同时存在.h和.cpp,cpp中函数已经定义,依旧提示无法解释的外部符号 VS中对文件有中表示,可以通过选中.h或.cpp文件,右键,属性–通常–项类型中 C/C++标头是针对头文件的,C/C++编译器是...

C++ 解析 TFRecord 文件 using Protocal Buffer【代码】

最近实习中遇到了C++解析TFRecord的需求,搜索一圈发现虽然tensorflow C++ API中提供了相应的接口,但是编译C++版本的Tensorflow并不容易&很不清真,把他当做自己的项目的依赖就更离谱了。内网外网找了很久都发现没有相关的教程,于是调研了一圈,写了个自定义的解析脚本,只需要安装了解protobuf即可使用。读懂本文以及使用对应代码需要对protobuf有一定了解。 TFRecord的官方文档中说明了TFRecord由若干tf.train.Example组成,每...

C++对文件夹内容计数并输出特定格式文件的名称【代码】

借助io.h,支持通配符*,输出count为jpg的个数。 #include<iostream> #include <io.h>int main() {std::string folder = "/*自定义的文件夹位置*/\\images\\*";std::string ext = ".jpg";intptr_t handle = -1;_finddata_t fileinfo;std::string file = folder + ext;const char* to_search = file.c_str();handle = _findfirst(to_search, &fileinfo); //第一次查找if (-1 == handle)return 0;std::cout << fileinfo.name...