« C++Builder 2009への移植作業 その2 C++Builder 2007と2009のAnsiStringの動作の違いの調査 | メイン | C++Builder 2009への移植作業 その3 C++Builder 2009におけるTStringList#LoadFromFileの挙動の変化 »

AnsiDequotedStrの不具合

C++Builderには、引用符付き文字列から引用符を削除する「AnsiDequotedStr」という便利な関数が用意されています。

AnsiDequotedStr("\"abc\"", '"'); //=> abc
AnsiDequotedStr("\"あいう\"", '"'); //=> あいう

ところが、引用符が連続するとき、空の文字列を返してしまうようです。

AnsiDequotedStr("\"\"abc\"\"", '"'); //=> 
AnsiDequotedStr("\"\"あいう\"\"", '"'); //=>

C++Builder 2007とC++Builder 2009で現象を確認しました。

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/833

コメント (4)

高橋智宏:

そもそも文字列の途中に引用符があると、以下のような結果になりませんか?
AnsiDequotedStr("\"ab\"cd\"", '"'); //=> ab

山本隆:

本当ですね。
この関数は、文字列の最初の引用符から次の引用符の間の文字列を返す、ということでしょうか。

ヘルプの説明
> AnsiDequotedStr 関数は,引用符付き文字列の最初と最後から引用符を削除し,文字列内の引用符の組を単引用符に削減します。
> S パラメータの最初と最後に引用符がない場合,AnsiDequotedStr は S をそのまま返します。
は正しくないように感じます。

高橋智宏:

> は正しくないように感じます。
出来ましたらQCへの登録をお願いいたします。

山本隆:

QCは英語ですよね。苦手なんです。
もし可能なら高橋様にQCの登録をお願いできないでしょうか。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年10月12日 16:27に投稿されたエントリーのページです。

ひとつ前の投稿は「C++Builder 2009への移植作業 その2 C++Builder 2007と2009のAnsiStringの動作の違いの調査」です。

次の投稿は「C++Builder 2009への移植作業 その3 C++Builder 2009におけるTStringList#LoadFromFileの挙動の変化」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35