2013-06-20 4 views
0

Я видел код, который использовал языковой стандарт, но не дал ему имя. Я видел это несколько раз на самом деле, и я не уверен, как это работает.Что означает пустой параметр локали?

auto& f = std::use_facet<std::ctype<wchar_t>>(std::locale()); 

Мне было интересно, что значит просто использовать пустой конструктор locale. Я думал, что все языковые имена должны быть указаны.

Для некоторого контекста, вот где я нашел код: http://en.cppreference.com/w/cpp/locale/ctype/toupper

+0

http://en.cppreference.com/w/cpp/locale/locale/locale было всего в двух кликах от – Cubbi

ответ

4

http://www.cplusplus.com/reference/locale/locale/locale/

конструктор по умолчанию создает копию текущего глобального языкового стандарта, который локаль устанавливается с помощью предыдущего вызова локали :: глобальный, или локаль :: классический локализированных :: глобальный не был вызван ,

Что такое locale::classic?

http://www.cplusplus.com/reference/locale/locale/classic/

Возвращает классический локаль, что соответствует в семантике к локали "C" (локали по умолчанию).

Что такое язык «C»?

http://www.cplusplus.com/reference/clocale/

"C" локаль минимальный языковой стандарт. Это довольно нейтральная локаль, которая имеет одинаковые настройки во всех системах и компиляторах, и поэтому точные результаты программы, использующей этот язык, предсказуемы. Это язык, используемый по умолчанию для всех программ на C.

+0

Знаете ли вы, что язык «C» является языковым стандартом по умолчанию для программ на C++? – 0x499602D2

+0

Я просто цитирую ссылку на ссылки, которые я предоставил, но, учитывая, что они все ссылаются на стандартные классы C++, я могу только предположить, что это правильно. Если нет, эти ссылки имеют несвязанную информацию, которая вводит в заблуждение. –

+0

@ 0x499602D2 Да, языковой стандарт по умолчанию на C++ - «C». – bames53

2

std::locale имеет конструктор, который не принимает никаких параметров. Он создает локаль, которая представляет собой снимок текущей глобальной локали.

Смежные вопросы