Номер через запятую отображается правильно на симуляторе, но не на iPad

0

Чтобы показать номер, разделенный запятой, я устанавливаю local как

setlocale(LC_NUMERIC, "en_US");

затем составить сообщение

char msg[100]={0};
sprintf(msg,"Reach a score %'ld.",mission.param1);
mission.msg=msg;

Затем я показываю это сообщение как:

sprintf( msgStr,"%s",mission.msg.c_str());

_missionStatusLabel1=CCLabelTTF::create(msgStr, "MarkerFelt-Thin", 52 * _scaleY, CCSizeMake(1000 * _scaleX,0),
kCCTextAlignmentLeft);

_missionStatusLabel1->setPosition( ccp(_screenSize.width * 0.53f, _screenSize.height*0.704f) );

Проблема в том, что на симуляторе он показывает правильный формат, например, для 25000 он показывает 25 000, но когда я запускаю iPad (ios7), он просто показывает 25000 без запятой.

что я могу пропустить?

РЕДАКТИРОВАТЬ:

Или Как бы вы показывали номер, разделенный запятой?

  • 0
    это не ответ на ваш вопрос, но вам действительно следует избегать использования литералов, таких как 0.704f, и вместо этого хранить их в константе. В противном случае 1) Если вы хотите изменить его, вам нужно сделать это только в одном месте. 2) Это дает значению значение (т. Е. SCALE_VALUE легче понять, чем 0,704f).
  • 0
    Проверьте результат setlocale (убедитесь, что en_US поддерживается на iPad)
Показать ещё 4 комментария
Теги:
cocos2d-x

1 ответ

0
Лучший ответ

Как вы можете видеть. В моем коде выше я устанавливаю язык с помощью c++ setLocale. Но этот код показывал запятую только в симуляторе, но не в самом устройстве. Поэтому я попробовал класс NSNumberFormatter, и все работало просто отлично. Я выбрал код из NSNumberFormatter с разделителем с запятой и просто обернул интерфейс c++ для использования

Ещё вопросы

Сообщество Overcoder
Наверх
Меню