- ベストアンサー
C++BuilderのコードをVC++用に変更するには?
環境 WIN98 VC++6.0 MFC にて ネット上でちょうど私が知りたいことが載っているサイトを見つけました。 それは付箋ソフトの作り方を解説しているサイトです。 http://www.zdnet.co.jp/developer/0307/18/dvn06.html しかしながら、そのサイトではC++Builderを使っています。 C++BuilderのコードをVC++用に変更したいのですが、 お分かりでしたお教えください。 知りたいのは、以下のコードです。 C++Builder専用のコードかと思いましたが、調べるとSubStringはAPIだったのでVC++でも使えると思います。 Pos()は調べても分からなかったのですが、変わりになる関数は有るのでしょうか? ********************** // 「,」で区切られた文字列から要素を切り出す。 // メモデータのロードに使う static AnsiString GetToken(AnsiString &s) { AnsiString ret; // ,が文字列に含まれる場合、 // ,より前の文字列を戻り値とし、 // 引数の文字列の,以前を削除する。 // 例えば引数の文字列が"1,2,3"の場合、 // 戻り値は"1"、引数の文字列は"2,3"となる。 int pos=s.Pos(","); if (pos>=1) { ret=s.SubString(1,pos-1); s=s.SubString(pos+1,s.Length()-pos); return ret; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
MFCを使うといっても 書かれているC++Builderを CStringとその関数を用いて書き直しただけですが、 CString GetToken( CString* s ){ CString ret; int pos; pos = s->Find(",", 0); if(pos>=1){ ret = s->Left(pos); *s = s->Right(s->GetLength() - pos - 1); } return ret; } で同様の動作になります。
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
strtok() ではダメなのですか?
お礼
>strtok() ではダメなのですか? 全然だめではありません。 一つの方法としてまったく問題ありません。 只、その他の方法を知らないのでベストかどうかは分かりません。 MFC特有の書き方だとどうやるのか興味があり、新規に質問しました。
- furyfox
- ベストアンサー率56% (58/103)
SubStringはAPIではなく AnsiStringのメソッドです。(Posも同じく) AnsiStringはC++Builderのクラスです。 VC++やBCB、gccに依存しないSTLを使う事をお勧めします。 #include <string> using namespase std; static string GetToken(string* s){ string ret; int pos = s->find(","); if (pos>=0) { ret=s->substr(0,pos); if (s->length() > pos) *s = s->substr(pos + 1,s->length() - pos); } return ret; } MFCだとCStringというものがありますが それは詳しくないので他の人にお任せします。
お礼
回答有難うございます。 >SubStringはAPIではなく API関数一覧というところに載っていたのですが、見たサイトが間違ってたのかな。 >STLを使う事をお勧めします。 良く聞く言葉ですが、分かってないので勉強します。 >MFCだとCStringというものがありますが 確かにそうですね。 メンバ関数を調べれば良いだけかも。。。
お礼
回答ありがとうございます。 昼間は仕事中のため考えることが出来ず、夜家で考えようと思っていましたが、その前に回答を頂いてしまいました。 とても参考になります。