CとC++の違い (6) 文字列

目次

1. キャラクター

2. C言語の文字列

1. 文字列の表現

2. 入力と出力

3. よく使う機能

3、文字列クラス

1. 定義、初期化、入出力


1. キャラクター

タイプ: 文字

入力: getchar

出力:putchar

例:

#include <stdio.h>

void main()
{
	char ch;
	while (ch = getchar())
	{
		if (ch == EOF)break;
		printf("%d", ch);
		putchar(ch);
	}
	return;
}

実行結果:(8行)

a^Zb
97a
26
a
97a
10

^Z

説明する:

「a^Zb」と入力して Enter キーを押し、「a」と「^Z」の 2 文字を入力し、次に「a」を入力して Enter を押し、「a」の 2 文字と改行文字を入力してから「^Z」を入力します。プログラムは終了します。

注1:

「\0」の ASCII コードは 0、「^A」~「^Z」の ASCII コードは 1 ~ 26、そのうち改行文字「\n」は 10、「^Z」は 26、ただし、入力バッファの領域が空の場合に '\n' の後に '^Z' が表示されると、'^Z' の ASCII コードは -1 となり、ファイルの終わりを示します。

注2:

EOF は定数 -1 であり、OJ の入力と出力は多くの場合 EOF によって制御されます。

注3:

10 番の '\n' と 26 番の '^Z' は両方とも getchar の切り詰めです。文字列の行を入力すると、getchar は最初の '\n' または '^Z' のみを読み取ることができ、残りは破棄されます。

2. C言語の文字列

1. 文字列の表現

C言語では文字列はchar配列で表現され、文字列の末尾に終了を示す「\0」が付加されます。

2. 入力と出力

入力: 取得

出力:put

例:

#include <stdio.h>
#include<string.h>

void main()
{
	char str[]="abcde";
	puts(str);
	gets(str);
	printf("%d\n", strlen(str));
	puts(str);
	return;
}

実行結果1:(4行)

abcde
^Za
5
abcde

実行結果2:(5行)
 

abcde
a^Zb

2
a?

改行文字と ^Z は両方とも gets 関数の切り捨てであることがわかります。

改行文字は gets によって読み取られて破棄され、gets は getchar と同じように ^Z を処理します。バッファーが空の場合は -1 文字、バッファーが空でない場合は 26 番目の文字です。

3. よく使う機能

(1) strcat ファンクション文字列接続

文字列の連結 文字列の連結

例:

#include <stdio.h>
#include<string.h>

void main()
{
	char str1[10] = "ab";
	char str2[] = "cd";
	printf("%d %d\n", strlen(str1), strlen(str2));
	strcat(str1, str2);
	printf("%d %d\n", strlen(str1), strlen(str2));
	printf("%s %s", str1, str2);
	return;
}

操作結果:

2 2
4 2
abcd cd

strcat(str1, str2) 関数は、str2 を str1 の後ろにコピーします。

(2) strcpy関数とstrncpy関数 - 文字列コピー

strcpy(str1,str2) は、str2 を str1 の場所にコピーします。

strncpy(str1,str2,n) は、str2 の最初の n 文字を str1 の位置にコピーします。

(3) strcmp関数 - 文字列比較

strcmp(str1,str2) は辞書編集順に比較され、戻り値 >0、=0、<0 はそれぞれ str1>str2、str1==str2、str1<str2 を表します。

(4) strlen と sizeof - 文字列の長さ

sizeof はキーワードであり、配列の長さを計算します。

strlen は、文字列内の '\0' を除く文字数を計算する関数です。

(5) strlwr および strpr 関数 - 文字列の大文字と小文字の区別

strlwr は大文字を小文字に変換します

strpr は小文字を大文字に変換します

概要: C スタイルの文字列入力 - cin または getline または get、cin はスペースまたは改行で終わり、getline と get は両方とも 1 行を読み取ります。

getline 関数は改行文字を読み取って破棄しますが、get 関数はパラメーターを受け取る場合は改行文字を入力バッファーに保持します。get 関数はパラメーターを受け取らない場合は改行文字を読み取って破棄できます。

3、文字列クラス

 

1. 定義、初期化、入出力

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abc";
    cin>>str;
    cout<<str;
    return 0;
}

2. 文字列の割り当て、長さの計算、および反転

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1="abc";
    string str2=str1;
    reverse(str2.begin(),str2.end());
    cout<<str1<<" "<<str1.length()<<" "<<str2;
    return 0;
}

3. 文字列から文字を取得する

配列形式または反復子形式にすることができます。

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abcde";
    cout<<str[2]; 
    string::iterator it=str.begin();
    cout<<*it;
    it=str.end()-1;
    cout<<*it;
    return 0;
}

出力:

ケー

4. 文字列の比較と接続

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1="abc",str2="def",str3="def";
    if(str1<str2)cout<<"str1<str2\n";
    if(str2==str3)cout<<"str2=str3\n";
    cout<<str1+str2;
    return 0;
}

出力:

str1<str2
str2=str3
abcdef

5. 文字列を文字配列に変換する

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abc";
    const char *p1=str.c_str();
    char *p2=new char[20];
    strcpy(p2,p1);
    cout<<p2;
    return 0;
}

6. 文字列内の文字を検索する

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abca";
    cout<<str.find('a')<<" "<<str.find('a',2);
    return 0;
}

出力:

0 3

C++ 教科書に記載されている一般的な文字列関数を添付します。

おすすめ

転載: blog.csdn.net/nameofcsdn/article/details/132225117