Poco::Path
との作業非常に興味深いエラーが見つかりました。 (Windowsの場合)であるPoco :: Pathはconst wchar_t *でコンパイルされますが、予期しない動作をします
#include <iostream>
#include <string>
#include <Poco/Path.h>
int main()
{
std::wstring a_path = L"c:\\temp";
//Poco::Path from_wstring(a_path); // ERROR: fails to compile, expected
Poco::Path from_wchar_t(a_path.c_str()); // compiles... unexpected
std::cout << from_wchar_t.toString() << std::endl;
return 0;
}
しかし、上記のプログラムの出力:
C:
\次のコードを参照してください。 \ temp代わりに期待の
Poco::Path
ドキュメントを確認してください、std::string
とconst char*
(どちらもUTF-8)からのみstd::wstring
(つまり、最初のパスが失敗する理由)を期待するコンストラクタもありません。
どのようにしてconst wchar_t*
でコンパイルされ、なぜ予期しない出力(間違ったパス)が表示されるのですか?
:すべてのPOCOインタフェース(当然、除く、変換のものを)UTF-8文字列が必要です。必要に応じて、内部的な変換が行われます。 – Alex