日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【小白学习C++ 教程】十七、C++ 中的字符数组和字符串常见的函数

發布時間:2024/10/8 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小白学习C++ 教程】十七、C++ 中的字符数组和字符串常见的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

字符數組

char mychar[6] = {'H', 'e', 'l', 'l', 'o'};

下面定義的字符串數組在 C/C++ 中的內存表示

#include <iostream>using namespace std;int main () {char mychar[6] = {'H', 'e', 'l', 'l', 'o'};cout << "mychar message: ";cout << mychar<< endl;return 0; }mychar message: Hello

下面是字符數組常見的API函數

strcpy(s1, s2);將字符串 s2 復制到字符串 s1 中。
strcat(s1, s2);將字符串 s2 連接到字符串 s1 的末尾。
strlen(s1)返回字符串 s1 的長度。
strcmp(s1, s2);如果 s1 和 s2 相同,則返回 0;如果 s1<s2,則小于 0;如果 s1>s2,則大于 0。
strchr(s1, ch);返回指向字符串 s1 中第一次出現字符 ch 的指針。
strstr(s1, s2);返回指向字符串 s1 中第一次出現字符串 s2 的指針。

在編程中,有很多情況我們需要將數字轉換為字符串或將字符串轉換為數字。

#include <iostream> #include <cstring>using namespace std;int main () {char str1[10] = "Hello";char str2[10] = "World";char str3[10];int len ;// copy str1 into str3strcpy( str3, str1);cout << "strcpy( str3, str1) : " << str3 << endl;// concatenates str1 and str2 to str4 string str4 = strcat( str1, str2);cout << "strcat( str1, str2): " << str4 << endl;// 這里str1 concatenates 變成HelloWorldcout << "strcat( str1, str2): " << str1 << endl;// total lenghth of str1 after concatenationlen = strlen(str1);cout << "strlen(str1) : " << len << endl;return 0; }strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strcat( str1, str2): HelloWorld strlen(str1) : 10

String

C++ 中由“std::string”類定義的字符串是字符流到對象中的表示。換句話說,String 類是字符串對象的集合。這個字符串類是 std 命名空間的一部分,在頭文件“string.h”中定義。

字符數組是在編譯時靜態分配的,但字符串是對象,因此可以動態分配。

由于字符數組本質上是靜態的,一旦定義它們就不能收縮或擴展。

因此,如果我們有一個大小為 100 的字符數組,并且我將它初始化為單詞“Hello”,那么剩余的空間就被浪費了。

Char mystr[100] = “hello”;

在這里,剩下的 95 個位置被浪費了。

與此相反,字符串對象本質上是動態的,并且會占用值的確切空間。

字符數組的性能較快,而字符串較慢。

字符數組幾乎沒有可以操作它們的函數。但是String 類有很多函數,包括迭代器函數。

這些是字符數組和字符串對象類之間的一些基本區別。

獲取字符串的長度

要獲取字符串的長度,您可以使用 length 或 size 函數,它們是字符串類的成員,并返回字符串中的字符數:

string my_string1 = "ten chars."; int len = my_string1.length(); // or .size();

搜索和子串

字符串類支持使用函數 find()、rfind() 和 substr() 進行簡單的搜索和子字符串檢索。find 成員函數接受一個字符串和一個位置,并從給定位置開始搜索字符串以查找給定字符串的第一次出現。它返回字符串第一次出現的位置

find()

字符串類支持使用函數 find()、rfind() 和 substr() 進行簡單的搜索和子字符串檢索。find 成員函數接受一個字符串和一個位置,并從給定位置開始搜索字符串以查找給定字符串的第一次出現。它返回字符串第一次出現的位置,或者一個特殊值:string::npos,表示它沒有找到子字符串。

此示例代碼在給定字符串中搜索字符串“cat”的每個實例并計算實例總數:

#include <iostream> #include <string> using namespace std;int main() {string input;int i = 0;int cat_appearances = 0;getline(cin, input, '\n');for (i = input.find("cat", 0); i != string::npos; i = input.find("cat", i)){cat_appearances++;i++;}cout << cat_appearances; } catcatcatcat 4

substr

在 C++ 中,std::substr()該函數接受兩個值pos和len作為參數,并返回一個新構造的字符串對象,其值初始化為該對象的子字符串的副本。復制字符串從pos開始并完成直到pos+len表示[pos, pos+len)。

#include <iostream> using namespace std;int main() {string s1 = "Runsen";string r = s1.substr(1, 3);string r1 = s1.substr(3,2);// prints the resultcout << "String is: " << r << endl;cout << "String is: " << r1 << endl;return 0; }String is: uns String is: se

此外,C++ 庫中有大量預定義的函數。

輸入功能:

  • getline():該函數用于存儲用戶在對象內存中輸入的字符流。
  • push_back():該函數用于在字符串的末尾輸入一個字符。
  • pop_back():該函數用于刪除字符串的最后一個字符。

容量功能:

  • capacity() :- 該函數返回分配給字符串的容量,該容量可以等于或大于字符串的大小。分配了額外的空間,以便在將新字符添加到字符串時,可以有效地完成操作。
  • resize() :- 這個函數改變字符串的大小,大小可以增加或減少。
  • length():-該函數求字符串的長度
  • shrink_to_fit() :- 該函數減少字符串的容量,使其等于字符串的最小容量。如果我們確定不需要進一步添加字符,則此操作可用于節省額外內存。

迭代器函數:

  • begin() :- 這個函數返回一個迭代器到字符串的開頭。
  • end() :- 這個函數返回一個迭代器到字符串的末尾。
  • rbegin() :- 此函數返回一個指向字符串末尾的反向迭代器。
  • rend() :- 該函數返回一個指向字符串開頭的反向迭代器。

操作函數:

  • copy(“char array”, len, pos) :- 該函數復制其參數中提到的目標字符數組中的子字符串。它需要 3 個參數,目標字符數組,要復制的長度和開始復制的字符串中的起始位置。
  • swap() :- 此函數將一個字符串與另一個字符串交換。

練習:給定字符串的打印出所有子字符串的程序

#include <iostream> using namespace std;void subString(string s, int n) {//在外循環中選擇起始點,并為給定的起始點選擇不同字符串的長度for (int i = 0; i < n; i++)for (int len = 1; len <= n - i; len++)cout << s.substr(i, len) << endl; }int main() {string s = "abc";subString(s,s.length());return 0; }a ab abc b bc c

總結

以上是生活随笔為你收集整理的【小白学习C++ 教程】十七、C++ 中的字符数组和字符串常见的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。