• 締切済み

ポインタ

String String Mid(int start, int length) const { char *p="HelloWorld"; char s[100]; p+=start; for(int i=0;i<length;i++) { *s++=*p+;; } return s3; で++には左辺値が必要ですとでます。 stringクラスのMid関数を実装しているのですが start分ポインタを進めてlength取り出す関数なんですが ここまでは組んだのですが、うまくいきません。 どうすればうまくいきますか?

みんなの回答

回答No.3

String String Mid(int start, int length) const { return String.Substring(start,length); } じゃ駄目か? つ~かさ、Substringメソッドがあんのに、なんでMidを作ろうとすんの?それが不思議。

kouharing
質問者

補足

理由は・・勉強の為です。

回答No.2

とりあえず、エラーが出ないようにする なら s[i] = *p++; とすればいいですが。 まず、「配列」と「ポインタ」は別のも のです。ポインタは ++ できますが、配 列(名)は、++ できません。 (文法的にいえば、配列名は左辺値では ないから。おおざっぱに言えば、配列名 は、配列の先頭アドレスに変換されるの で、それはつまり、(配列の先頭なので) 変更できない) return s; も一見おかしな気がしますが、 char * から、String へのキャストが発 生するので、これが適切に定義されてい ればOKでしょう。 さらに、s[] が、char 配列なので、reutrn する前に、「文字列の終わり」をうまく 設定しなければなりません。この設定も できていないです。

回答No.1

根本的に全然ダメです。 メモリ管理が全然理解できていません。 http://www5c.biglobe.ne.jp/~ecb/cpp/04_19_02.html を参考にしてみてください。

関連するQ&A