как я устанавливаю надлежащую начальную локаль для программы C++ в Windows?

Первый вопрос: как установить этот стиль?

  1. Если вы делаете что-то вроде Html.fromHtml (" hello "), вызывая getTypeFace (), вернуть 0 (TypeFace.NORMAL). Для этого я бы сказал, что вам может потребоваться выполнить синтаксический анализ самостоятельно и создать подстроки в соответствии с найденными вами тегами HTML.

  2. Если вы используете для этого атрибуты TextView - android: textStyle = "bold"

Вы можете позвонить напрямую:

Log.d(TAG, "has typeface=${tv_typeface.typeface.style}")
    [ 116] В качестве альтернативы, если вы используете SpannableStrings для редактирования того, как должен выглядеть ваш текст

Вы можете сделать что-то вроде:

//Set an italic style to the word "hello"
val spannableString = SpannableString("hello world")
spannableString.setSpan(StyleSpan(Typeface.ITALIC), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
tv_typeface.text = spannableString

//Get the style italic used
val spannedString = tv_typeface.text as SpannedString
val spans = spannedString.getSpans(0, tv_typeface.length(), StyleSpan::class.java)

for (span in spans) {
  Log.d(TAG, "StyleSpan between: ${spannedString.getSpanStart(span)} and ${spannedString.getSpanEnd(span)} with style ${span.style}")
}
16
задан Charlie 20 February 2009 в 21:47
поделиться

1 ответ

setlocale () является C, не C++. Я неопределенно не забываю видеть интерференцию между двумя на VC6, но это было ошибкой. Обычно, setlocale () влияет на поведение функций C только.

В C++ локализацией управляет станд.:: класс локали. По умолчанию секретные операции локали используют глобальную локаль, которая получена построением значения по умолчанию объект языкового стандарта и может быть установлена со станд.:: локаль:: глобальный (станд. константы:: locale&).

Построение объекта языкового стандарта с пустой строкой (станд.:: локаль ("")), создает локаль, соответствующую среде программы.

При запуске программы глобальная локаль является "C" или "Классической" локалью. Для установки глобальной локали на локаль среды программы (то, которое я предполагаю, - то, что Вы спрашиваете) Вы таким образом пишете:

std::locale::global(std::locale(""));

Например, мои региональные настройки в настоящее время устанавливаются на французский язык (Канада). Выполнение этого:

int main(void)
{
  std::cout << std::locale().name() << std::endl;
  std::locale::global(std::locale(""));
  std::cout << std::locale().name() << std::endl;
  std::locale::global(std::locale("C"));
  std::cout << std::locale().name() << std::endl;
  return 0;
}

печать:

C
French_Canada.1252
C
25
ответ дан 30 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: