回答受付が終了しました

C++で、stringとcharがありますが、違いはなんですか? なんかforで一時的に使うやつにはchar使う傾向がある気がしますが。

C言語関連 | プログラミング113閲覧xmlns="http://www.w3.org/2000/svg">25

回答(7件)

1

1. char は言語本体の文法に組み込まれた基本型。 std::string はそうではなく、言語を使って書かれたライブラリ部品。 2. charは単一の文字の表現。 std::string は、0個以上任意個数の char の並び表現。

1人がナイス!しています

char, int, short, ... も、 class も struct も enum も.... すべて 型 です。 基本型, ユーザ定義型 の差はあるけど、 言語構文上は全て型。 quickbrwnfoxjmpsさん ご回答を読むべき。

0

クラスも型の一種なんだけどね... まず。charは文字型。stringは文字列を扱う型。 文字ってのは、一般で言う文字とはちょっと違う定義で、各文字一つ一つにつけてある番号:文字コードのこと。少なくともソースコードに使える文字群を文字コードに割り当てた範囲を格納出来るだけの整数型が文字型。 C++の前身Cでは、文字列というのは文字型の配列であってNUL文字で終端(最後にNUL文字を付加)してあるもののこと。Cの場合には、文字列を扱う場合はこの構造を強く意識して、正しく扱わないといろいろな事故が起こる。重要なデータを壊したりとか機械が暴走したりとかセキュリティの脆弱性になったりとか。正しく扱えばいいといえばそうなんだけど、結構面倒。 そこで、C++では、標準でstringという文字を便利に、楽に扱う道具が用意された。C++は、Cのプログラムもほとんどそのまま使えることがウリだから、char/charの配列とstringは非常に親しい関係に設定されていて、stringに格納されている文字列の各文字をcharで取り出して一文字ずつ処理する、なんて使い方も想定されているし、実際によく行われる...というのが > forで一時的に使うやつにはchar使う傾向 ということになる。

0

stringは、正確には型ではなくてクラスにゃ。 stringクラスは、char型の配列で作る文字列を便利に扱うためのクラスにゃ。 だから、stringクラスで出来ることは、すべてchar型を使って出来るにゃ。 そして、stringクラスを使うまでもないものはchar型で済ますから、 forなどでちょこっと扱うだけの場合は、char型のまま使うにゃ。

この返信は削除されました

0

一文字を扱うならchar型 文字列を扱うならstring型です。 別にforでcharと組み合わせなくてはいけない必要はありません。 forでも何でも一文字単位で扱う時にchar型を使います。 charはただの値型の変数なので中には文字の値がそのまま入っているだけですが、 stringはクラス型なので、とても複雑です。 string型の詳しい内容については以下を読んでください。 超初心者向けプログラミング入門 C++の文字列 https://programming.pc-note.net/cpp/string.html C++の文字列2 https://programming.pc-note.net/cpp/string2.html

この返信は削除されました