Day01_C++編程

01.思維導圖

02.

方法一:

#include <iostream>
#include <cstring>
#include <iostream>
using namespace std;
class mystring
{
private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr);void append(const char* ptr);void append(mystring ptr);void compare(const char* ptr);void show(){cout << buf << endl;}
};
mystring::mystring(const char* str):len(strlen(str))
{buf=(char*)malloc(len+1);strcpy(buf,str);
}//復制字符串
void mystring::copy(const char* ptr)
{int i=0;len=strlen(ptr);while(ptr[i]!='\0'){buf[i]=ptr[i];i++;}buf[i]='\0';
}void mystring::copy(mystring ptr)
{int i=0;len=ptr.len;while(ptr.buf[i]!='\0'){buf[i]=ptr.buf[i];i++;}buf[i]='\0';
}
//追加字符串
void mystring::append(const char* ptr)
{int i=0,j=0;while(buf[i]!='\0'){i++;};for(;ptr[j]!='\0';j++,i++){buf[i]=ptr[j];}buf[i]='\0'; len=i;
}void mystring::append(mystring ptr)
{int i=len,j=0;while(ptr.buf[j]!='\0'){buf[i]=ptr.buf[j];i++;j++;
}
buf[i]='\0';
len=i;}
//主函數
int main()
{mystring str = "hello";str.show();mystring ptr = "world";str.copy(ptr);str.show();str.copy("你好");str.show();str.append(ptr);str.show();str.append("你好");str.show();
}

方法二:

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;
class mystring{
private://指向一個堆空間,該堆空間用來保存外部傳入的字符串char* buf;int len;//記錄buf里面保存的字符串有多少
public:mystring(const char* s){len=strlen(s);buf=(char*)malloc(len+1);strcpy(buf,s);}void copy(mystring s){len=s.len;char* str=s.buf;strcpy(buf,str);}void copy(const char* s){len=strlen(s);strcpy(buf,s);}void append(mystring s){len+=s.len;char* str=s.buf;strcat(buf,str);}void append(const char* s){int l=strlen(s);len+=l;strcat(buf,s);}int compare(mystring s){char* str=s.buf;return strcmp(buf,str);}int compare(const char* s){return strcmp(buf,s);}void show(){cout<<buf<<endl;}char at(int n){return buf[n];}};int main(int argc,const char** argv)
{mystring str="hello";//這段代碼要求一定為mystring類寫一個可隱式調用的單參構造函數mystring ptr="world";//在寫單參構造函數的時候,私有成員len使用列表初始化的形式初始化str.copy(ptr);//str.copy("nihao");str.show();str.append(ptr);str.append("你好");str.show();str.compare(ptr);str.compare("您好");str.show();//最后再寫一個show函數,用來在終端輸出str里面保存的字符串cout<<str.at(2)<<endl;}
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>                        
#include <vector>
#include <memory>using namespace std;
class mystring{
private:char* buf;int len;
public:mystring(){}mystring(const char* r);void copy(mystring r);//此功能其實就是buf的set接口,即setBufbool compare(mystring r);void append(mystring r);char at(int index);void show();
};mystring::mystring(const char* r):len(strlen(r)),buf((char*)calloc(1,len+1))
{//len=strlen(r);//buf=(char*)calloc(1,len+1);strncpy(buf,r,len);
}void mystring::copy(mystring r)
{//如果len>=r.len直接用//如果len<r.len,根據r.len申請新空間,釋放原先空間if(len<r.len){len=r.len;free(buf);buf=(char*)calloc(1,len+1);}strncpy(buf,r.buf,len);
}bool mystring::compare(mystring r)
{/*if(strcmp(buf,r.buf)==0){return true;}else{return false;}*/return strcmp(buf,r.buf)==0;
}void mystring::append(mystring r)
{len=len+r.len;char* temp=buf;buf=(char*)calloc(1,len+1);strcpy(buf,temp);strcat(buf,r.buf);
}char mystring::at(int index)
{return buf[index];
}void mystring::show()
{cout<<buf<<endl;
}int main(int argc, const char** argv)
{mystring str="hello";mystring ptr="world";str.show();ptr.show();str.copy(ptr);str.show();str.copy("niho");str.show();cout<<(str.compare(ptr))<<endl;cout<<(str.compare("world"))<<endl;str.append(ptr);str.show();str.append("world");str.show();cout<<str.at(0)<<endl;return 0;                             
}

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

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

相關文章

lammps滾動模擬

大家好,我是小馬老師。 本文介紹lammps中模型滾動的設置方法。 模型的滾動需要解決2個問題: (1)設置滾動旋轉軸位置和方向,也就是確定沿哪個方向滾動。 (2)原地滾動還是在滾動過程中整體也要移動。 為保證滾動的平穩,旋轉軸一般通過模型的質心,需要先計算模型的質…

增強LLM最后隱藏層的意義與效果

LLM 置信度增強:是否可以增強最后的隱藏層(非logits層) 表征工程是提取隱藏層狀態表征,LLM的置信度增強是優化的logist數值 要回答“是否可以增強最后的隱藏層(非logits層)以及是否有意義”,需要結合大語言模型的結構特性、你當前的任務(情感分析)以及“隱藏層增強”…

根據數據判斷神經網絡所需最小參數量

更新中方法目標&#xff1a;找到能充分學習數據規律&#xff0c;但不過度擬合噪聲的最小參數量。增量策略&#xff1a;優先增加深度&#xff08;層數&#xff09;&#xff1a;添加1個隱藏層&#xff08;如16神經元&#xff09;→ 訓練驗證再增加寬度&#xff08;神經元&#xf…

基于APEX系統自動曝光數學原理

目錄 一、APEX系統 二、自動曝光概述 三、曝光估計及校正算法的實現 一、APEX系統 在美國國家標準中,將(4.22)式所表示的基本參數方程進行了變換,將他表示為以2 為底的指數形式,這樣就可以用加法的形式來表達曝光參數方程式,稱為加法系統,即 APEX(Additive System of Ph…

JAVA后端面試筆記

1.JAVA中和equals的區別 區別&#xff1a;一個是運算符&#xff0c;一個是方法 比較變量的值是否相同 ①如果比較的對象是基本數據類型&#xff0c;則比較數值是否相等 ②如果比較的是引用數據類型&#xff0c;則比較的是對象的內存地址是否相等 equals方法比較對象的內容是否…

在 Ubuntu 上將 Docker 降級到版本 25.0.5 (二) 降低版本,涉及兼容性問題

以下有免費的4090云主機提供ubuntu22.04系統的其他入門實踐操作 地址&#xff1a;星宇科技 | GPU服務器 高性能云主機 云服務器-登錄 相關兌換碼星宇社區---4090算力卡免費體驗、共享開發社區-CSDN博客 兌換碼要是過期了&#xff0c;可以私信我獲取最新兌換碼&#xff01;&a…

什么是MySQL 視圖

文章目錄什么是MySQL 視圖定義為什么使用視圖創建/替換視圖更新視圖總結什么是MySQL 視圖 定義 視圖是一種虛擬表&#xff0c;是一個邏輯表&#xff0c;本身并不包含數據&#xff0c;通過select語句去基本表上動態生成數據。 舉個例子&#xff1a; 你有一個員工表employees…

Neo4j 5.x版本的導出與導入數據庫

neo4j的版本管理真的是災難級別的&#xff0c;文檔也亂&#xff0c;特定版本也難下&#xff0c;不同版本之間的命令存在很大差異&#xff0c;網上的很多資料都是Neo4j 4.x的&#xff0c;在此給出我自己試出來的5.x的導入導出方法使用前先關閉neo4j服務進入到neo4j安裝目錄的bin…

Java——深入解析 CGlib 與 JDK 動態代理:原理、區別與實踐

在 Java 開發中&#xff0c;動態代理是實現 AOP&#xff08;面向切面編程&#xff09;的核心技術&#xff0c;廣泛應用于日志記錄、事務管理、權限控制等場景。其中&#xff0c;JDK 動態代理和 CGlib 是兩種最常用的動態代理實現方式。本文將從原理、區別、使用場景等方面深入解…

變頻器帶動電機:全方位解析參數變化

在現代工業自動化領域&#xff0c;變頻器作為電機調速的核心設備&#xff0c;扮演著至關重要的角色。它能夠精準地控制電機的運行狀態&#xff0c;通過改變電源頻率和電壓&#xff0c;實現電機轉速、轉矩、功率等參數的靈活調整。本文將深入探討變頻器帶動電機時&#xff0c;各…

OpenCV 入門知識:圖片展示、攝像頭捕獲、控制鼠標及其 Trackbar(滑動條)生成!

&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?Take your time ! &#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?…

Elasticsearch是什么?

Elasticsearch&#xff08;簡稱ES&#xff09;是一種基于Lucene的分布式搜索引擎&#xff0c;廣泛應用于大數據、日志分析、全文搜索等場景。它的核心是提供高效、可擴展的搜索和分析能力。ES 提供了強大的全文搜索、聚合分析、數據可視化等功能&#xff0c;可以用來快速地對海…

(Arxiv-2025)OmniGen2:通向先進多模態生成的探索

OmniGen2&#xff1a;通向先進多模態生成的探索 paper title&#xff1a;OmniGen2: Exploration to Advanced Multimodal Generation paper是BAAI發布在Arxiv 2025的工作 Code:鏈接 Abstract 在本研究中&#xff0c;我們提出了 OmniGen2&#xff0c;這是一種多功能、開源的生成…

期權到期會對大盤有什么影響?

本文主要介紹期權到期會對大盤有什么影響&#xff1f;期權到期對大盤的影響主要體現在以下幾個方面&#xff0c;但整體影響通常有限且短期&#xff0c;具體效果需結合市場環境、期權規模及行權價位置綜合判斷。期權到期會對大盤有什么影響&#xff1f;1. 市場流動性波動到期日效…

【LeetCode刷題指南】--隨機鏈表的復制

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

系統學習算法:專題十四 鏈表

前提知識&#xff1a;1.畫圖&#xff0c;數據結構相關的題&#xff0c;畫圖必不可少&#xff0c;只要能畫出來&#xff0c;那么后面的代碼就很容易能寫出來&#xff0c;因為將抽象的數據結構轉換為直觀的圖畫2.引入虛擬頭結點&#xff0c;也叫哨兵位&#xff0c;能夠避免考慮很…

零基礎學后端-PHP語言(第一期-PHP環境配置)

從本期開始&#xff0c;我們學習PHP&#xff0c;但是我們要先配置PHP環境 PHP官網鏈接&#xff1a;PHP For Windows: Binaries and sources Releases 我們可以看到有以下資源 可以看到有很多php的版本&#xff0c;有Non Thread Safe和Thread Safe&#xff0c;還有zip&#xf…

C++ primer知識點總結

《C Primer》系統學習指南&#xff1a;從C到C的平滑過渡根據你提供的《C Primer》目錄和你的需求&#xff08;C語言背景轉C&#xff0c;側重網絡編程&#xff09;&#xff0c;我將為你制定一個全面的學習計劃&#xff0c;包含知識點詳解、C/C對比、實戰案例和分階段項目練習。第…

異構融合 4A:重構高性能計算與復雜場景分析的安全與效率邊界

當全球數據量以每兩年翻一番的速度爆炸式增長&#xff0c;高性能計算&#xff08;HPC&#xff09;與復雜場景分析正成為破解氣候預測、基因測序、金融風控等世界級難題的關鍵引擎。但異構計算環境的碎片化、多系統協同的復雜性、數據流動的安全風險&#xff0c;正在形成制約行業…

【華為機試】240. 搜索二維矩陣 II

文章目錄240. 搜索二維矩陣 II描述示例 1示例 2提示解題思路核心分析問題轉化算法實現方法1&#xff1a;右上角開始搜索&#xff08;推薦&#xff09;方法2&#xff1a;逐行二分查找方法3&#xff1a;分治法方法4&#xff1a;左下角開始搜索復雜度分析核心要點數學證明右上角搜…