我一直在尝试std::tolower()
使用不同的语言环境进行呼叫,但似乎出了点问题。我的代码如下:
int main() {
std::locale::global(std::locale("es_ES.UTF-8"));
std::thread(&function, this); // Repeated some times
// wait for threads
}
void function() {
std::string word = "HeÉllO";
std::transform(word.begin(), word.end(), word.begin(), cToLower);
}
int cToLower(int c) {
return std::tolower(c, std::locale());
}
所以当我尝试执行这个程序时,我得到:
terminate called after throwing an instance of 'std::bad_cast'
terminate called recursively
what(): std::bad_cast
Aborted (core dumped)
虽然执行return std::tolower(c);
工作正常,但它只是将“标准”字符转换为较低的字符,而不是É
.
我有一些线程同时执行相同的功能,使用 C++11 并使用 g++ 编译(以防它与它有关)。
我想知道这是否是实现我想做的正确方法,或者还有其他方法。
谢谢!