1

だから私はすでに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 でコンパイルされていないようです。

4

2 に答える 2