AnsiDequotedStrの不具合

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

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

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

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

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

コメント

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

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください