Когда я запускаю следующий исходный код, я получаю «Ошибка сегментации (дамп ядра)» в строке № 3.
char s[] = "helloworld";
const std::collate<char>* pc = &std::use_facet<std::collate<char> >(std::locale("en_US"));
std::string str = pc->transform(s, s + std::strlen(s));
std::cout << str.length() << "," << str << std::endl;
Если я заменю строку № 2 на
const std::collate<char>* pc = new std::collate_byname<char>("en_US");
Я могу получить правильный результат. Я думаю, что результат этих двух строк должен быть одинаковым, все они получают сортировку из среды выполнения, так почему же первая получила ошибку? Я сделал что-то неправильно?
PS: компилятор c++ — g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3).