重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

環境 WIN98 VC++6.0 MFC にて

ネット上でちょうど私が知りたいことが載っているサイトを見つけました。
それは付箋ソフトの作り方を解説しているサイトです。
http://www.zdnet.co.jp/developer/0307/18/dvn06.h …

しかしながら、そのサイトでは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;
}

A 回答 (3件)

MFCを使うといっても


書かれているC++Builderを
CStringとその関数を用いて書き直しただけですが、

CStringGetToken( CString* s ){
CStringret;
int pos;

pos = s->Find(",", 0);
if(pos>=1){
ret = s->Left(pos);
*s = s->Right(s->GetLength() - pos - 1);
}
return ret;
}

で同様の動作になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

昼間は仕事中のため考えることが出来ず、夜家で考えようと思っていましたが、その前に回答を頂いてしまいました。

とても参考になります。

お礼日時:2003/09/30 20:43

strtok() ではダメなのですか?

    • good
    • 0
この回答へのお礼

>strtok() ではダメなのですか?

全然だめではありません。
一つの方法としてまったく問題ありません。

只、その他の方法を知らないのでベストかどうかは分かりません。

MFC特有の書き方だとどうやるのか興味があり、新規に質問しました。

お礼日時:2003/09/30 18:07

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というものがありますが
それは詳しくないので他の人にお任せします。
    • good
    • 0
この回答へのお礼

回答有難うございます。
>SubStringはAPIではなく
API関数一覧というところに載っていたのですが、見たサイトが間違ってたのかな。

>STLを使う事をお勧めします。
良く聞く言葉ですが、分かってないので勉強します。


>MFCだとCStringというものがありますが
確かにそうですね。
メンバ関数を調べれば良いだけかも。。。

お礼日時:2003/09/30 20:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!