文字配列と文字列、charとstring定義の文字列の違いと遍歴
5017 ワード
文字配列:文字を格納する配列
文字列:最も頻繁に使用される文字配列で、特殊な文字配列です.
C++には専用の文字列のタイプはなく、1つの文字列は実際には1つの文字配列であり、普通の文字配列とは異なり、文字列の末尾には1つの文字0があり、文字列の終わりを表す.
charは文字配列を定義したり文字列を定義したりできます
char定義文字配列
char定義文字列
文字列の利点は、入力、出力、初期値の付与にあり、入力出力は悪用する必要はありません.文字配列は、各文字をループで順次出力する必要があります.
文字配列と文字列の違い
C++では、文字配列と文字列はcharキーワードで定義されていますが、両者の違いは、文字列の長さが文字数に1を加えたことです.0エンド文字が含まれているため、文字配列の長さが文字数です.文字配列についてはsizeofで長さを求めることができますが、文字列については長さに1を加算します.したがってこの長さは意味がないので、そのためにC++はstrlenで文字列の有効な内容の長さを求めることができる(文字列終了フラグ0を含まない).
ポインタと文字列、ポインタと文字配列
ポインタが文字配列を指す
ポインタが文字列を指す
char定義文字列
ポインタをcharで定義し、charで定義した文字列を指すと、ポインタ変数pと*pで出力される結果が異なります.2つの状況を見てください.具体的な原因は私も知らない.
方式1
方式2
string定義文字列
ここで特に注意しなければならないのはstringがキーワードではなくクラスであることです.次のコードのポインタはstringの最初の文字ではなくオブジェクトを指します. string定義文字列の各文字にアクセスするには、 を使用します. char定義の文字列のようにp 1[i]を使用することはできません.stringではi>0にポインタが割り当てられていません.この理解はもともと間違っています.
各文字をポインタで巡回用C++の反復器 は
文字列:最も頻繁に使用される文字配列で、特殊な文字配列です.
C++には専用の文字列のタイプはなく、1つの文字列は実際には1つの文字配列であり、普通の文字配列とは異なり、文字列の末尾には1つの文字0があり、文字列の終わりを表す.
charは文字配列を定義したり文字列を定義したりできます
char定義文字配列
char b[]={'h','e','l','l','o'};// , 5
char定義文字列
文字列の利点は、入力、出力、初期値の付与にあり、入力出力は悪用する必要はありません.文字配列は、各文字をループで順次出力する必要があります.
char b[]="hello";//
char *p = b;
cout << b;// hello
cout<< *p;// , h
文字配列と文字列の違い
C++では、文字配列と文字列はcharキーワードで定義されていますが、両者の違いは、文字列の長さが文字数に1を加えたことです.0エンド文字が含まれているため、文字配列の長さが文字数です.文字配列についてはsizeofで長さを求めることができますが、文字列については長さに1を加算します.したがってこの長さは意味がないので、そのためにC++はstrlenで文字列の有効な内容の長さを求めることができる(文字列終了フラグ0を含まない).
ポインタと文字列、ポインタと文字配列
ポインタが文字配列を指す
char b[] = { 'h','e','l','l','o' };
char *pchar = b;
cout << *pchar;// h
//cout << b; // , hello
cout << b[0]; // h
// hello。
for (size_t i = 0; i < 5; i++)
{
cout << *pchar;
pchar++;
}
ポインタが文字列を指す
char定義文字列
ポインタをcharで定義し、charで定義した文字列を指すと、ポインタ変数pと*pで出力される結果が異なります.2つの状況を見てください.具体的な原因は私も知らない.
方式1
char str[] = "we are poor students";//
cout<<str<// :we are poor students。 , 。
// 。
char *p = str;
while (*p != '\0')
{
cout << *p;
p++;
}
方式2
//
char *p = str;
while (*p != '\0')
{
cout << p<
string定義文字列
ここで特に注意しなければならないのはstringがキーワードではなくクラスであることです.次のコードのポインタはstringの最初の文字ではなくオブジェクトを指します.
string str="hello world";
string *p1 = &str; // &
cout << str << "," << *p1; // hello world,hello world
str[i]
cout<
各文字をポインタで巡回
string str1 = "we are poor students";
for (string::iterator p1 = str1.begin(); p1 !=str1.end(); p1++)
{
cout << *p1 ;
}
c_str() (Get C string equivalent)
でcタイプのstringに変換され、以下のコードで示す:string str1 = "we are poor students";
const char *p = str1.c_str();// 。
for (size_t i = 0; i < str1.size(); i++)
{
cout << *(p + i);
}