C++Builderには、引用符付き文字列から引用符を削除する「AnsiDequotedStr」という便利な関数が用意されています。
AnsiDequotedStr("\"abc\"", '"'); //=> abc
AnsiDequotedStr("\"あいう\"", '"'); //=> あいう
ところが、引用符が連続するとき、空の文字列を返してしまうようです。
AnsiDequotedStr("\"\"abc\"\"", '"'); //=>
AnsiDequotedStr("\"\"あいう\"\"", '"'); //=>
C++Builder 2007とC++Builder 2009で現象を確認しました。
コメント (4)
そもそも文字列の途中に引用符があると、以下のような結果になりませんか?
AnsiDequotedStr("\"ab\"cd\"", '"'); //=> ab
投稿者: 高橋智宏 | 2008年10月19日 23:16
日時: 2008年10月19日 23:16
本当ですね。
この関数は、文字列の最初の引用符から次の引用符の間の文字列を返す、ということでしょうか。
ヘルプの説明
> AnsiDequotedStr 関数は,引用符付き文字列の最初と最後から引用符を削除し,文字列内の引用符の組を単引用符に削減します。
> S パラメータの最初と最後に引用符がない場合,AnsiDequotedStr は S をそのまま返します。
は正しくないように感じます。
投稿者: 山本隆 | 2008年10月20日 08:45
日時: 2008年10月20日 08:45
> は正しくないように感じます。
出来ましたらQCへの登録をお願いいたします。
投稿者: 高橋智宏 | 2008年10月20日 11:13
日時: 2008年10月20日 11:13
QCは英語ですよね。苦手なんです。
もし可能なら高橋様にQCの登録をお願いできないでしょうか。
投稿者: 山本隆 | 2008年10月20日 18:13
日時: 2008年10月20日 18:13