質問: "h") { cout << s << endl; } return 0; } ``` このプログラムが実行できないのはなぜか、正答例を踏まえてお教え願えませんでしょうか。 意とする動作は >入力受付 >最初の文字が”h"ならばその文字列をそのまま返す ただこれだけです。 このプログラム、ポインタの定義は一度もしていないのにも関わらず、エラーで「ポインタと整数の評価」を吐かれてしまうため、これ以上踏み込みようがなくて困っています。 どうかご回答よろしくお願い申し上げます。
回答: コードの中で ``` if (s[0] == "h") { ``` としていますが、これは`char`である`s[0]`と文字列の`"h"`を比べています。文字列は、実際には`const char`の配列で、配列はポインタとして使われるので、そのようなエラーになります。エラーメッセージでポインタは`"h"`を、整数は`s[0]`を指しています。 正しくは、文字列の代わりに文字を使います。 ``` if (s[0] == 'h') { // シングルクォーテーションに替える ``` これで動くのですが、せっかくC++を使っているので、`std::string`を使う方がいいです。今のコードでは、256文字以上入力すると、クラッシュするなど変なことが起こります。