Форум программистов, компьютерный форум CyberForum.ru

Как перевести из WCHAR в int не потеряв цифру 0? - C++

Восстановить пароль Регистрация
 
casper007
61 / 61 / 21
Регистрация: 12.12.2013
Сообщений: 375
06.03.2014, 11:26     Как перевести из WCHAR в int не потеряв цифру 0? #1
Мне нужно перевести номер месяца в тип WCHAR для того, чтобы вывести в окно. Если использовать _itow_s(mm,date,10), то 0 пропадает. Хотя, наверное он пропадает еще в момент инициализации переменной. Так вот как лучше поступить?

C++
1
2
3
int mm=06; 
WCHAR date[2];
_itow_s(mm,date,10);
Пробовал добавлять проверку
C++
1
if(mm<=10) {date[0]=0; date[1]=mm;}
Но не получается.



MVS 2010



Простите, в заголовке темы ошибка. Правильно: Как перевести из int в WCHAR не потеряв цифру 0?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 11:26     Как перевести из WCHAR в int не потеряв цифру 0?
Посмотрите здесь:

Перевести wchar в char C++
C++ как можно перевести `int*' to `UINT'
C++ Как перевести CString -ское число в Int?
C++ Как цифру преобразовить с типа String в тип int ?
C++ как перевести WORD в INT
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
THE--MASTER
Заблокирован
06.03.2014, 11:37     Как перевести из WCHAR в int не потеряв цифру 0? #2
Цитата Сообщение от casper007 Посмотреть сообщение
ростите, в заголовке темы ошибка. Правильно: Как перевести из int в WCHAR не потеряв цифру 0?
так как ты и заметил она теряется во время инициализации
int mm = 06; - это mm == 6;
casper007
61 / 61 / 21
Регистрация: 12.12.2013
Сообщений: 375
06.03.2014, 11:40  [ТС]     Как перевести из WCHAR в int не потеряв цифру 0? #3
Цитата Сообщение от THE--MASTER Посмотреть сообщение
так как ты и заметил она теряется во время инициализации
А как тогда добавить этот ноль в символьный массив?
THE--MASTER
Заблокирован
06.03.2014, 12:00     Как перевести из WCHAR в int не потеряв цифру 0? #4
ну тысяча и один способ есть ...
C++
1
2
3
4
5
6
7
8
#define _SCL_SECURE_NO_WARNINGS
//...
int mm=06; 
std::wstring str = std::to_wstring(mm);
if(str.size() < 2)
    str.insert(0,1,L'0');
WCHAR date[2];  
str.copy(date, 2, 0);
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.03.2014, 12:22     Как перевести из WCHAR в int не потеряв цифру 0? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На мой взгяд проще всего так:
C++
1
2
3
int m = 6;
char date[3];
sprintf( date, "%02d", m );
Для UNICODE по-аналогии..
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
06.03.2014, 12:25     Как перевести из WCHAR в int не потеряв цифру 0? #6
Цитата Сообщение от THE--MASTER Посмотреть сообщение
int mm = 06; - это mm == 6;
однако int mm = 012 - это нифига не 12 про это тоже надо помнить.
Ибо с нуля начинаются восьмеричные константы.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.03.2014, 16:04     Как перевести из WCHAR в int не потеряв цифру 0? #7
Сразу не сообразил что можно сделать намного проще..
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main() {
    int m = 6;
    char date[3];
    date[0] = m / 10 + '0';
    date[1] = m % 10 + '0';
    date[2] = '\0';
    std::cout << date << std::endl; // Вывод: 06
}
1. Опять же, это не для UNICODE.
2. Быстрее всех вышеописанных методов.
3. m должно быть двузначным или однозначным числом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2014, 17:19     Как перевести из WCHAR в int не потеряв цифру 0?
Еще ссылки по теме:

C++ Как перевести массив строк в массив int
C++ Как правильно перевести int и string в *char для записи в SQLlite?
C++ Вывести наибольшую цифру числа типа long int

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
06.03.2014, 17:19     Как перевести из WCHAR в int не потеряв цифру 0? #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h> // WCHAR
#include <iostream>
#include <sstream> // std::basic_stringstream<>
 
int main()
{
    int value= 2;
 
    std::basic_stringstream<WCHAR> ss;
    ss.width(2);
    ss.fill('0');
 
    ss<<value;
 
    std::wcout<< ss.str().c_str(); 
 
    getchar();
    return 0;
}
Yandex
Объявления
06.03.2014, 17:19     Как перевести из WCHAR в int не потеряв цифру 0?
Ответ Создать тему
Опции темы

Текущее время: 09:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru