C++ での文字列オブジェクトの使用法の概要

php是最好的语言
リリース: 2018-08-08 10:59:10
オリジナル
1956 人が閲覧しました

C C 言語と比較して、C では文字列のサポートが大幅に強化されています。C スタイルの文字列の使用に加えて、組み込みデータ型の文字列も使用できます。文字列クラスは、次の理由により文字列の処理に特に便利です。関数のカプセル化。以下の文字列クラスの関数を数えてみましょう。

#まず、文字列クラスを呼び出したい場合は、最初にそのヘッダー ファイルをインクルードします

#include

string s1;//变量s1只是定义但没有初始化,所以其默认值为""即空字符串string s2="Hello World!";//变量s2在定义时同时被初始化/*string类的变量可以相互之间直接赋值,不需要像C语言一样,使用strcpy()函数一个字符一个字符的去赋值*///例如string s3=s2;//此时s3的内容和s2一样也是Hello World!//如果需要定义一个由很多相同字符组成的字符串时,还有另外的简便写法string s4(int n,char c);//s4是被初始化为由n的字符c组成的字符串
ログイン後にコピー

リクエストについて C 言語では、strlen() 関数を使用して文字列の長さを確認できます。C では、strlen(s3) を使用することもできます。 s3 文字列の実際の長さですが、C では文字列クラスとの関係が異なるため、言語は根本的に異なるため、通常、文字列の長さを見つけるには string.length() 関数を呼び出します

int len=0;len=string.length(s3);
cout<<"s3字符串的长度为"<<len<<endl;
ログイン後にコピー

上で述べたように、文字列のような文字列を別の文字列のような文字列に代入する場合は、値を直接代入するだけですが、文字列クラスが char* クラスに割り当てられている場合、または char* クラスが文字列クラスに割り当てられている場合はどうなるでしょうか。 ?もちろん、直接割り当てることはできません。コードを見てください。

//string类赋值给string类string s1="hello world";string s2;
s2=s1;//string类赋值给char*类string s1="hello world";char str[20]={0};
strcpy_s(str,s1.c_str());//char*类赋值给string类char str[20]="hello world";string s2;
s2=str;
ログイン後にコピー

同時に、文字列型変数は文字配列演算を使用して、その中の変数の 1 つを変更することもできます。たとえば、

#include <iostream>#include <string>string s1="this is my house";int i;//如果我们现在想改变里面某一个字符,可以直接将s1当成数组,找到对应的下标来改变i=6;
s[i]=&#39;t&#39;;//这样就可以将第6个字符改成t了
ログイン後にコピー

string クラスを使用すると、" " または " = " 演算子を使用して文字列を直接結合でき、非常に便利です。C で strcat()、strcpy()、malloc() などの関数を使用する必要がなくなりました。言語を使用して文字列を結合します。スペース不足やオーバーフローを心配する必要はもうありません。"" を使用して文字列を結合する場合、演算子の両側を文字列、文字列と C スタイルの文字列、または文字列と文字列にすることができます。文字の文字。

文字列クラスの割り当て

string &operator=(const string &s);//把字符串s赋给当前字符串 string &assign(const char *s);//用c类型字符串s赋值string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值string &assign(const string &s);//把字符串s赋给当前字符串string &assign(int n,char c);//用n个字符c赋值给当前字符串string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符串string &assign(const_iterator first,const_itertor last);//把first和last迭代器之间的部分赋给字符串
ログイン後にコピー

文字列の接続

string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾 string &append(const char *s);//把c类型字符串s连接到当前字符串结尾string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾string &append(const string &s);    //同operator+=()string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾string &append(int n,char c);        //在当前字符串结尾添加n个字符cstring &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾
ログイン後にコピー

文字列の部分文字列

string substr(int pos = 0,int n = npos) const;/ / pos

void swap(string &s2);    //交换当前字符串与s2的值
ログイン後にコピー

から始まる n 文字からなる文字列を返します。文字列の検索

rfind() は find() とよく似ており、文字列内のサブ文字も検索します。文字列の場合、find() 関数は 2 番目のパラメータから逆方向に検索するのに対し、rfind() 関数は 2 番目のパラメータまで検索する点が異なります。2 番目のパラメータ String で指定された添字でサブ文字が見つからなかった場合、無限値を返します 4294967295

int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置int rfind(const char *s, int pos = npos) const;int rfind(const char *s, int pos, int n = npos) const;int rfind(const string &s,int pos = npos) const;//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
ログイン後にコピー

文字列クラスの挿入関数:

string &insert(int p0, const char *s);string &insert(int p0, const char *s, int n);string &insert(int p0,const string &s);string &insert(int p0,const string &s, int pos, int n);//前4个函数在p0位置插入字符串s中pos开始的前n个字符string &insert(int p0, int n, char c);//此函数在p0处插入n个字符citerator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符void insert(iterator it, int n, char c);//在it处插入n个字符c
ログイン後にコピー

C での文字列クラス オブジェクトの使用法について、今日はいくつかの基本について説明しました。

関連する推奨事項:


標準 C での文字列クラスの使用法の概要

#C での参照の概要

以上がC++ での文字列オブジェクトの使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
c++
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート