だから私はすでにC++文字列で単語を大文字にする方法を見つけましたか? 、しかし、Boost::locale の例で提供されているものを含め、提案されているのと同様のコードを試しました。また、現在のコードと、期待される出力と実際の出力が何であるかも含めます。そのため、期待される出力が得られない理由を理解しようとしています。
コード
#include <iostream>
#include <string>
#include <boost/locale.hpp>
#include <boost/algorithm/string/case_conv.hpp>
int main() {
using namespace std;
using namespace boost::locale;
generator gen;
auto loc = gen("");
locale::global(loc);
cout.imbue(loc);
ios_base::sync_with_stdio(false);
cout << to_upper("hello!") << " " << boost::to_upper_copy("hello!"s) << endl;
cout << to_lower("HELLO!") << " " << boost::to_lower_copy("HELLO!"s) << endl;
cout << to_title("hELLO!") << endl;
cout << fold_case("HELLO!") << endl;
return 0;
}
期待される出力
HELLO! HELLO!
hello! hello!
Hello!
hello!
実際の出力
HELLO! HELLO!
hello! hello!
hELLO!
hello!
追加情報
- OS:Windows10 Home 64ビット
- コンパイラ: Microsoft Visual Studio 15.8.0
- プラットフォーム: x64
- デフォルト以外のコンパイル オプション:
/std:c++latest
- ブースト_バージョン: 106700
編集#1
vcpkg によってインストールされる Boost は、boost::locale::to_title
正しく機能するために必要な ICU でコンパイルされていないようです。