Cpp-3

文件和流

/*1.文件操作这需要用到 C++ 中另一个标准库 fstream2.对于标准库 fstream ,它定义了三个新的数据类型:数据类型            描述ofstream    表示输出文件流,用于创建文件并向文件写入信息ifstream    表示输入文件流,用于从文件读取信息fstream        表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息记忆:OutFileStream  -->    ofstreamInFileStream   -->    ifstream3.打开文件open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员e.g.void open(const char *filename, ios::openmode mode);参数说明:(以下模式可以结合使用)ios::app    追加模式。所有写入都追加到文件末尾ios::ate    文件打开后定位到文件末尾ios::in        打开文件用于读取ios::out    打开文件用于写入ios::trunc    如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0例如:1.以写入模式打开文件,并希望截断文件,以防文件已存在ofstream outfile;    // 实例化一个文件对象 outfileoutfile.open("file.dat", ios::out | ios::trunc );    // 调用文件对象,并使用 open 函数成员2.打开一个文件用于读写ifstream  afile;afile.open("file.dat", ios::out | ios::in );4.读取文件使用流提取运算符 >> 从文件读取信息5.写入文件使用流插入运算符 << 向文件写入信息6.关闭文件( close()函数是 fstream、ifstream 和 ofstream 对象的一个成员)void close();7.文件位置指针1.istream 和 ostream 都提供了用于重新定位"文件位置指针"的成员函数istream 的 seekg()            // 含义"seek get"ostream 的 seekp()            // 含义"seek put"参数:(不写参数,默认ios::beg)ios::beg        // begin    从开头        开始定位ios::cur        // current    从当前位置    开始定位ios::end        // end        从末尾        开始定位文件位置指针,是一个整数值指定了从文件的起始位置到指针所在位置的字节数
*/
#include <fstream>
#include <iostream>
using namespace std;int main ()
{char data[100];// 以写模式打开文件ofstream outfile;outfile.open("afile.dat");cout << "Writing to the file" << endl;cout << "Enter your name: "; cin.getline(data, 100);// 向文件写入用户输入的数据outfile << data << endl;cout << "Enter your age: "; cin >> data;cin.ignore();// 再次向文件写入用户输入的数据outfile << data << endl;// 关闭打开的文件outfile.close();// 以读模式打开文件ifstream infile; infile.open("afile.dat"); cout << "Reading from the file" << endl; infile >> data; // 在屏幕上写入数据cout << data << endl;// 再次从文件读取数据,并显示它infile >> data; cout << data << endl; // 关闭打开的文件infile.close();return 0;
}
// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );

异常处理

try
{// 尝试执行代码...
}
catch (ExceptionName e1)    // 捕获异常,解决异常
{// catch 块
}
catch (ExceptionName e2)
{// catch 块
}
catch (ExceptionName eN)
{// catch 块
}
double division(int a, int b)
{if( b == 0 ){throw "Division by zero condition!";    // 抛出异常}return (a/b);
}
/*定义新的异常可以通过继承和重载 exception 类来定义新的异常。下面的实例演示了如何使用 std::exception 类来实现自己的异常:
*/#include <iostream>
#include <exception>
using namespace std;struct MyException : public exception    // 通过让 MyException 继承 exception,实现自定义异常
{const char * what() const throw (){return "C++ Exception";}
};int main()
{try{throw MyException();}catch (MyException& e){std::cout << "MyException caught" << std::endl;std::cout << e.what() << std::endl;}catch (std::exception& e){//其他的错误}
}

多线程

/*<线程>1.什么是多线程?多线程是"多任务处理"的一种特殊形式多线程程序包含可以同时运行的两个或多个部分这样的程序中的每个部分称为一个线程每个线程定义了一个单独的执行路径2.创建线程e.g.#include <pthread.h>pthread_create (thread, attr, start_routine, arg)参数说明:参数                    描述thread                指向线程标识符指针。attr                一个不透明的属性对象,可以被用来设置线程属性。您可以指定线程属性对象,也可以使用默认值 NULL。start_routine        线程运行函数起始地址,一旦线程被创建就会执行。arg                    运行函数的参数。它必须通过把引用作为指针强制转换为 void 类型进行传递。如果没有传递参数,则使用 NULL。创建线程成功时,函数返回 0,若返回值不为 0 则说明创建线程失败
*/#include <iostream>
// 必须的头文件
#include <pthread.h>using namespace std;#define NUM_THREADS 5// 线程的运行函数
void* say_hello(void* args)
{cout << "Hello Runoob!" << endl;return 0;
}int main()
{// 定义线程的 id 变量,多个变量使用数组pthread_t tids[NUM_THREADS];for (int i = 0; i < NUM_THREADS; ++i){//参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数int ret = pthread_create(&tids[i], NULL, say_hello, NULL);if (ret != 0){cout << "pthread_create error: error_code=" << ret << endl;}}//等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;pthread_exit(NULL);
}

Web 编程

/*1.什么是 CGI?1.公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的2.CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准2.Web 服务器配置CGI 编程之前,请确保您的 Web 服务器支持 CGI,并已配置成可以处理 CGI 程序所有由 HTTP 服务器执行的 CGI 程序,都必须在预配置的目录中该目录称为 CGI 目录,按照惯例命名为 /var/www/cgi-bin虽然 CGI 文件是 C++ 可执行文件,但是按照惯例它的扩展名是 .cgi————————————————————————————————————————默认情况下,Apache Web 服务器会配置在 /var/www/cgi-bin 中运行 CGI 程序如果您想指定其他目录来运行 CGI 脚本,您可以在 httpd.conf 文件中修改以下部分:<Directory "/var/www/cgi-bin">AllowOverride NoneOptions ExecCGIOrder allow,denyAllow from all</Directory><Directory "/var/www/cgi-bin">Options All</Directory>————————————————————————————————————————在这里,我们假设已经配置好 Web 服务器并能成功运行,你可以运行任意的 CGI 程序,比如 Perl 或 Shell 等编译下面的代码,把可执行文件命名为 cplusplus.cgi,并把这个文件保存在 /var/www/cgi-bin 目录中在运行 CGI 程序之前,请使用 chmod 755 cplusplus.cgi UNIX 命令来修改文件模式,确保文件可执行
*/#include <iostream>
using namespace std;int main()
{cout << "Content-type:text/html\r\n\r\n";cout << "<html>\n";cout << "<head>\n";cout << "<title>Hello World - 第一个 CGI 程序</title>\n";cout << "</head>\n";cout << "<body>\n";cout << "<h2>Hello World! 这是我的第一个 CGI 程序</h2>\n";cout << "</body>\n";cout << "</html>\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java设计模式之中介者模式

中介者模式&#xff08;Mediator Pattern&#xff09; 基本介绍 中介者模式&#xff0c;用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用&#xff0c;从而使其解耦松散。而且可以独立地改变它们之间的交互。中介者模式属于行为型模式。比如MVC模…

C#,欧拉常数(Euler Constant)的算法与源代码

1 欧拉常数 欧拉常数最先由瑞士数学家莱昂哈德 欧拉 (Leonhard Euler) 在1735年发表的文章《De Progressionibus harmonicus observationes》中定义。欧拉曾经使用γ作为它的符号&#xff0c;并计算出了它的前6位&#xff0c;1761年他又将该值计算到了16位 。 欧拉常数最先由瑞…

Sql Server数据库软件里如何查看当前Sql Server服务运行的状态?

有时候我们会遇到sql server服务停止的情况&#xff0c;这可能会导致数据库无法正常访问和操作。 查看当前Sql Server服务运行的状态&#xff1a; 可以通过以下代码来检查服务状态&#xff1a; --检查sql server服务状态&#xff1a;EXEC xp_servicecontrol querystate, MSSQ…

2/10 BFS初探

其实在我看来解决全排列问题&#xff0c;核心还是顺序&#xff0c;想清楚结束条件&#xff0c;然后输出&#xff0c;以n3为例 #include<iostream> using namespace std; const int N 10; int path[N];//保存序列 int state[N];//数字是否被用过 int n; void dfs(int u) …

ubuntu彻底卸载cuda 重新安装cuda

sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" cuda10以上 cd /usr/local/cuda-xx.x/bin/ s…

Mac电脑清空特别大型旧文件如何一键清理?

在我们的数字生活中&#xff0c;Mac电脑常常承载着大量个人资料和重要文件。但当我们决定把自己的Mac送给亲人或朋友使用时&#xff0c;面临的首要任务便是彻底且高效地清空所有个人数据&#xff0c;以保证隐私安全。传统的删除方法虽然简单&#xff0c;但往往不能彻底清除所有…

问题:2、计算机网络的目标是实现________。 #媒体#知识分享

问题&#xff1a;2、计算机网络的目标是实现________。 A&#xff0e;数据处理 B&#xff0e;信息传输与数据处理 C&#xff0e;资源共享与信息传输 D&#xff0e;文献查询 参考答案如图所示

Windows系统的高效又炫酷的快捷键

Windows系统的高效又炫酷的快捷键 在Windows系统中&#xff0c;快捷键是一种提高工作效率的重要工具。掌握一些常用的快捷键可以让我们在操作电脑时更加得心应手。下面&#xff0c;我将为您介绍一些Windows系统中的高效又炫酷的快捷键&#xff0c;帮助您更好地使用电脑…

数据备份和恢复

数据备份和恢复 什么情况下会用到数据备份呢 数据丢失的场景 人为误操作造成的某些数据被误操作 软件BUG造成数据部分或者全部丢失 硬件故障造成数据库部分或全部丢失 安全漏洞被入侵数据恶意破坏 非数据丢失场景 基于某个时间点的数据恢复 开发测试环境数据库搭建 相同数据库的…

c语言中的隐式类型转换

数据类型转化 我们在实际编程中&#xff0c;不管你是有意的还是无意的&#xff0c;有时候都会让两个不同类型的数据参与运算&#xff0c;编译器为了能够生成CPU可以正常 执行的指令&#xff0c;往往会对数据做类型转换&#xff0c;将两个不同类型的数据转换成同一种数据类型。…

《CSS 简易速速上手小册》第1章:CSS 基础入门(2024 最新版)

文章目录 1.1 CSS 语法和选择器&#xff1a;挑选你的画笔1.1.1 基础知识1.1.2 重点案例&#xff1a;创建一个响应式导航菜单1.1.3 拓展案例 1&#xff1a;为特定链接添加图标1.1.4 拓展案例 2&#xff1a;创建一个简单的问答折叠面板 1.2 盒模型的基础&#xff1a;构建你的乐高…

Redis -- 渐进式遍历

家&#xff0c;是心的方向。不论走多远&#xff0c;总有一盏灯为你留着。桌上的碗筷多了几双&#xff0c;笑声也多了几分温暖。家人团聚&#xff0c;是最美的风景线。时间&#xff1a;2024年 2月 8日 12:51:20 目录 前言 语法 示例 前言 试想一个场景,那就是在key非常多的…

【docker】docker-compose.yml 语法详解

文章目录 一、相关文章二、基本概念三、Docker Compose语法介绍1、version2、Servicesimagebuildportsnetworksvolumesenvironmentdeploydepends\_oncommandrestart 3、networks 使用docker 网络驱动类型 4、volumes 使用 四、和环境变量文件.env结合使用五、使用示例1、基本使…

STL演讲比赛流程管理系统

很难,一边看视频&#xff0c;一边思考了好多天 speaker.h #pragma once//防止头文件重复包含 #include<iostream> using namespace std;//设计选手类 class Speaker{public:string m_Name;//姓名 double m_Score[2];//double带了浮点,防止重复 2代表可能有人是两轮…

字节跳动官方出品AI,白嫖使用GPT4!

关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区头部专家博主&#xff0c;编程严选网创始人。具有丰富的引领团队经验&#xff0c;深厚业务架…

《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)

文章目录 8.1 CSS 文件的组织和管理8.1.1 基础知识8.1.2 重点案例&#xff1a;项目样式表结构8.1.3 拓展案例 1&#xff1a;使用BEM命名规范8.1.4 拓展案例 2&#xff1a;利用 Sass 混入创建响应式工具类 8.2 提高网页加载速度的技巧8.2.1 基础知识8.2.2 重点案例&#xff1a;图…

alist基本用法@文档阅读@挂载网盘@网盘webdav挂载

文章目录 alist官网alist网站风格说明alist软件版本 安装和启动使用必看文档&#x1f47a;alist for android版本启动alist网页挂载阿里云盘open获取阿里云令牌 主页检查挂载情况 常用页面以配置挂载列表管理配置页面 FAQ可能遇到的错误检查服务重启前后alist的动作(自动挂载)a…

django中实现观察者模式

在Django中实现观察者模式&#xff0c;你可以利用Django的信号&#xff08;Signals&#xff09;系统。Django的信号提供了一种发布/订阅模型&#xff0c;允许解耦应用程序组件之间的交互。一个组件可以发送一个信号&#xff0c;而其他组件可以监听这个信号并响应它。 下面是如…

Google刚刚推出了图神经网络Tensorflow-GNN

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Vue源码系列讲解——虚拟DOM篇【四】(优化更新子节点)

目录 1. 前言 2. 优化策略介绍 3. 新前与旧前 4. 新后与旧后 5. 新后与旧前 6. 新前与旧后 7. 回到源码 8. 总结 1. 前言 在上一篇文章中&#xff0c;我们介绍了当新的VNode与旧的oldVNode都是元素节点并且都包含子节点时&#xff0c;Vue对子节点是 先外层循环newChil…