1

スタックオーバーフローユーザー!
プログラムの作成に Borland C++ Builder 6 を使用しています。はい、過去 200 万年もの間、時代遅れであることは承知していますが、この IDE を使用する必要があります。分割する必要がある文字列があります。そこで、次の方法を使用します。

void Orders::split(TStringList* lout, char* str, const char* separator) {
  for(char* tok = strtok(str, separator); tok!=NULL; tok = strtok(NULL, separator))
      lout->Add(tok);
}

また、プリプロセッサ定数として定義された区切り記号があります。

#define SEPARATOR ':'

次に、分割メソッドを呼び出します

split(ords, input.c_str(), SEPARATOR);

そして、次のエラーが表示されます。

[C++ エラー] File3.cpp(47): E2034 'int' を 'const char *' に変換できません

分割メソッドを呼び出す行で。const char* にキャストしても同じ結果になります。IDE にバグがあるのでしょうか、それともコード内の自分のエラーを確認できないのですか?
前もって感謝します!

4

1 に答える 1

6

strtokconst char*区切り文字としてを探しています。代わりに、次のように定義してみてください。

#define SEPARATOR ":"

これは、区切り文字のセットを指定できるため、これらの文字のいずれかが見つかったstrtok場合に停止します。

于 2012-05-28T19:38:36.020 に答える