C++ 文件和流、異常處理、動態內存、預處理器

一、C++文件和流:

在C++中進行文件處理,需要包含頭文件<iostream>和<fstream>。fstream標準庫定義的三個新的數據類型:

數據類型

描述

ofstream

該數據類型表示輸出文件流,用于創建文件并向文件寫入信息。

ifstream

該數據類型表示輸入文件流,用于從文件讀取信息。

fstream

該數據類型通常表示文件流,且同時具有 ofstream 和 ifstream 兩種功能,這意味著它可以創建文件,向文件寫入信息,從文件讀取信息。

打開文件:

void open(const char *filename, ios::openmode mode);

???關閉文件:

Void close();

文件被打開的模式:

模式標志

描述

ios::app

追加模式。所有寫入都追加到文件末尾。

ios::ate

文件打開后定位到文件末尾。

ios::in

打開文件用于讀取。

ios::out

打開文件用于寫入。

ios::trunc

如果該文件已經存在,其內容將在打開文件之前被截斷,即把文件長度設為 0。

示例:

ofstream outfile;

outfile.open("file.dat", ios::out | ios::trunc );

ifstream ?afile;

afile.open("file.dat", ios::out | ios::in );

二、C++異常處理:

異常是程序在執行期間產生的問題。C++ 異常是指在程序運行時發生的特殊情況。異常提供了一種轉移程序控制權的方式。

C++ 異常處理涉及到三個關鍵字:try、catch、throw。

throw:?當問題出現時,程序會拋出一個異常。這是通過使用?throw?關鍵字來完成的。

catch:?在您想要處理問題的地方,通過異常處理程序捕獲異常。catch?關鍵字用于捕獲異常。

try:?try?塊中的代碼標識將被激活的特定異常。它后面通常跟著一個或多個 catch 塊。

try {

// 保護代碼

}catch( ExceptionName e1 ) {

// catch 塊

}catch( ExceptionName e2 ) {

// catch 塊

}catch( ExceptionName eN ) {

// catch 塊

}

三、C++動態內存:

C++程序中的內存分為兩個部分:1、棧—在函數內部聲明的所有變量都將占用棧內存;2、堆—程序中未使用的內存,在程序運行是可用于動態分配的內存。

使用new運算符為給定類型的變量在運行時分配堆內的內存,當不再需要動態分配的內存空間,使用delete運算符,來刪除由new運算符分配的內存。示例:

double* pvalue = NULL; // 初始化為 null 的指針

pvalue = new double; // 為變量請求內存

double* pvalue = NULL;

if( !(pvalue = new double )) {

cout << "Error: out of memory." <<endl;

exit(1);

}

delete pvalue; ???????// 釋放 pvalue 所指向的內存

四、C++命名空間:

命名空間的定義使用關鍵字?namespace,后跟命名空間的名稱:

namespace namespace_name {

// 代碼聲明

}

調用帶有命名空間的函數或變量,需要在前面加上命名空間的名稱:

name::code; // code 可以是變量或函數

使用using namespace指令,在使用命名空間時,可以不用再前面加上命名空間的名稱。

命名空間的嵌套:通過使用?::?運算符來訪問嵌套的命名空間中的成員

namespace namespace_name1 {

// 代碼聲明

namespace namespace_name2 {

// 代碼聲明

}

}

五、C++模板:

模板式泛型編程的基礎,泛型編程即以一種獨立于任何特定類型的方式編寫代碼。

函數模板:

template <typename type> ret-type func-name(parameter list) {

// 函數的主體

}

類模板:

template <class type> class class-name {

...

}

六、C++預處理器:

◆?#define預處理:用于創建符號常量,該符號常量稱為宏。

#define macro-name replacement-text

可以使用 #define 來定義一個帶有參數的宏:

#define MIN(a,b) (a<b ? a : b)

◆?條件編譯:有幾個指令可以用來有選擇地對部分程序代碼進行編譯。

#ifdef NULL

?? #define NULL 0

#endif

#ifdef DEBUG

??? cerr <<"Variable x = " << x << endl;

#endif

#if 0

??? 不進行編譯的代碼

#endif

C++中的預定義宏:

描述

__LINE__

這會在程序編譯時包含當前行號。

__FILE__

這會在程序編譯時包含當前文件名。

__DATE__

這會包含一個形式為 month/day/year 的字符串,它表示把源文件轉換為目標代碼的日期。

__TIME__

這會包含一個形式為 hour:minute:second 的字符串,它表示程序被編譯的時間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168138.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168138.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168138.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode項目推送到git

1、打開項目文件 打開文件后點擊vs code左側工具欄中第三個源代碼管理圖標&#xff0c;點擊初始化倉庫&#xff0c;此時會創建一個本地倉庫會檢查該項目中的文件變更 2、創建遠程倉庫 點擊克隆/下載&#xff0c;復制HTTPS地址 3、添加遠程地址 1&#xff09;圖形化操作 2…

Leetcode刷題之用隊列實現棧(C語言版)

Leetcode刷題之用隊列實現棧&#xff08;C語言版&#xff09; 一、題目描述二、題目要求三、題目示例四、題目解析Ⅰ、MyStack* myStackCreateⅡ、void myStackPush(MyStack* obj, int x)Ⅲ、int myStackPop(MyStack* obj)Ⅳ、int myStackTop(MyStack* obj)Ⅴ、bool myStackEmp…

文件夾重命名:徹底擺脫數字困擾,批量修改文件夾名去除數字

在日常生活和工作中&#xff0c;經常會遇到需要修改文件夾名稱的情況。有時候是因為文件夾名稱中包含了數字&#xff0c;有時候是因為文件夾名稱不符合規范。無論出于什么原因&#xff0c;修改文件夾名稱都是一件非常繁瑣的事情。尤其是需要修改大量文件夾名稱時&#xff0c;手…

Jenkins 整合 Docker 自動化部署

Docker 安裝 Jenkins 配置自動化部署 1. Docker 安裝 Jenkins 1.1 拉取鏡像文件 docker pull jenkins/jenkins1.2 創建掛載文件目錄 mkdir -p $HOME/jenkins_home1.3 啟動容器 docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkin…

CentOS rpm安裝Nginx和配置

CentOS rpm安裝Nginx和配置 官方下載地址: http://nginx.org/en/download.html 介紹 Nginx(“engine x”)是一款由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。 rpm包安裝 #安裝nginx&#xff0c…

k8s部署的java服務查看連接nacos緩存的配置文件

一、問題描述 k8s部署的java服務&#xff0c;使用nacos中的配置文件&#xff0c;需要在緩存中查看該服務具體是使用到了哪些配置文件 二、解決 參考文檔: https://nacos.io/zh-cn/docs/system-configurations.html 文檔描述如下: 進入java服務容器進入用戶目錄下的nacos&a…

4-Docker命令之docker version

1.docker version介紹 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [參數] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…

Android 12.0 mt6771新增分區功能實現四

1.前言 在12.0的系統rom開發中,在對某些特殊模塊中關于數據的存儲方面等需要新增分區來保存, 所以就需要在系統分區新增分區,接下來就來實現這個功能,看第四部分的新增分區的實現過程 2.mt6771新增分區功能實現四的核心類 device/mediatek/mt6771/ueventd.mt6771.rcdevice…

Java枚舉詳解

一、什么是枚舉類型 枚舉類型是一種特殊的數據類型&#xff0c;用于定義一組固定的命名常量。枚舉類型提供了一種更強大、更安全和更易讀的方式來表示一組相關的常量。 在Java中&#xff0c;枚舉類型是通過使用enum關鍵字來定義的。枚舉類型可以包含一個或多個枚舉常量&#xf…

常見狀態碼總結

常見狀態碼總結 2xx 200 OK&#xff1a;表示服務器成功處理了客戶端的請求&#xff0c;并返回所請求的數據。這是最常見的狀態碼&#xff0c;表示一切正常。201 Created&#xff1a;表示服務器成功處理了客戶端的 POST 請求&#xff0c;并在服務器上創建了新的資源。204 No C…

vue005——vue組件入門(非單文件組件和單文件組件)

一、非單文件組件 1.1、單文件組件的使用 1.1.1、局部注冊 1、第一步&#xff1a;創建school組件 2、第二步&#xff1a;注冊組件&#xff08;局部注冊&#xff09; 3、第三步&#xff1a;使用組件&#xff08;編寫組件標簽&#xff09; <!DOCTYPE html> <html>…

設計模式—里氏替換原則

1.概念 里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說&#xff0c;任何基類可以出現的地方&#xff0c;子類一定可以出現。 LSP是繼承復用的基石&#xff0c;只有當衍生類可以替換掉基類&#xff0c;軟件單位的功能不受到影…

Spring注解方式整合第三方框架

目錄 Spring整合MyBatis 原有xml方式整合配置如下 注解方式&#xff1a; Import可以導入如下三種類 第三方框架是指由其他開發者或團隊開發的軟件模塊或庫&#xff0c;供開發者在自己的應用程序中使用。這些框架通常提供了一系列已經封裝好的功能或工具&#xff0c;可節省開…

使用flask返回json格式的數據

Flask Flask是一個使用Python編寫的輕量級Web框架&#xff0c;它的設計理念是保持簡單、靈活和易擴展。它的核心是Werkzeug和Jinja2&#xff0c;并且它本身只提供了非常基礎的Web框架功能&#xff0c;例如路由和請求處理等。 使用Flask可以快速創建一個Web應用程序&#xff0c;…

跳躍游戲Ⅱ[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給定一個長度為n的0索引整數數組nums。初始位置為nums[0]。每個元素nums[i]表示從索引i向前跳轉的最大長度。換句話說&#xff0c;如果你在nums[i]處&#xff0c;你可以跳轉到任意nums[i j]處: 0 < j < nums[i] i j < n …

【Python 訓練營】N_8 打印阿姆斯特朗數

題目 輸入一個數&#xff0c;判斷是否為阿姆斯特朗數&#xff0c;阿姆斯特朗數指一個n位正整數等于其各位數字的n次方之和。其中n為3時是水仙花數。 分析 利用循環&#xff0c;獲取數的長度&#xff0c;根據長度和定義&#xff0c;拆分出來運算 答案 while True:n int(in…

【Python 訓練營】N_7 打印水仙花數

題目 打印出1000以內所有的"水仙花數"&#xff0c;所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方和等于該數本身。例如&#xff1a;153是一個"水仙花數"&#xff0c;因為1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 …

數學啟發式

學習資料&#xff1a; 優化求解器 | Gurobi 數學啟發式算法&#xff1a;參數類型與案例實現 數學啟發式算法 | 可行性泵 (Feasibility Pump)算法精講&#xff1a;一份讓您滿意的【理論介紹編程實現數值實驗】學習筆記(PythonGurobi實現) 大佬到底是大佬&#xff01;這些資料太…

Mac Ubuntu雙系統解決WiFi和WiFi 5G網絡不可用問題

文章目錄 設備信息1. Ubuntu WiFi不可用解決方式查看Mac的網卡型號根據網卡型號搜索獲取到的解決方法查看WiFi名字問題參考鏈接 2. 解決WiFi重啟后失效問題打開終端創建.sh腳本文件編輯腳本文件復制粘貼腳本修改腳本權限創建并編輯systemd service文件復制粘貼下文到systemd se…

Typescript怎樣對URL參數進行編碼?

URL中的參數需要進行編碼&#xff08;URL encoding&#xff09;是為了確保傳輸的參數不包含特殊字符&#xff0c;同時確保數據的可靠性和安全性。 特殊字符如空格、&、?等在URL中有特殊含義&#xff0c;如果直接包含在參數值中&#xff0c;可能會導致解析錯誤或者安全問題…