如何将String转换为Upper / toLower Case(Unicode是必须的;西里尔语,希腊语等)?

时间:2013-10-29 12:11:25

标签: c++ unicode tolower toupper

我正在寻找一种将NON-LATIN字符串转换为高位和/或低位的方法。 Cyrillic-,Greek-和co。写作系统。换句话说:将支持大/小写的所有字符转换为大写或小写。

注意:Qt Framework中的QString支持此功能。但我正在寻找一种非Qt解决方案。

我尝试了这段代码,它只支持Basic-Latin(a-z,A-Z),并且不支持ÁŞȧȦ等。 (???)为什么这么简约?

#include <iostream>
#include <string>
#include <algorithm>

#include <boost/algorithm/string.hpp>

using std::cout;
using std::cerr;
using std::endl;
using std::cin;
typedef std::string string;

static string text;

int main(void)
{
  cout << "Enter String: ";
  cin >> text;

  for (size_t i = 0; i < text.length(); i++)
    text[i] = std::toupper(text.at(i));

  cout << "Upper Case (libstdc++): " << text << endl;
  cout << "Upper Case (libboost):  " << boost::to_upper_copy(text) << endl;
}

我下载了Qt源代码,但对我来说,作为业余爱好者,我无法找到QString实现,看看这里发生了什么。为什么它只支持ALL。

是否可能有std或boost方式转换toupper或者支持所有支持它的角色?

第三方图书馆也可以。

PS:对不起我的英文。

0 个答案:

没有答案