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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
casper007
 Аватар для casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 391
#1

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

06.03.2014, 11:26. Просмотров 253. Ответов 7
Метки нет (Все метки)

Мне нужно перевести номер месяца в тип 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
THE--MASTER
Заблокирован
06.03.2014, 11:37     Как перевести из WCHAR в int не потеряв цифру 0? #2
Цитата Сообщение от casper007 Посмотреть сообщение
ростите, в заголовке темы ошибка. Правильно: Как перевести из int в WCHAR не потеряв цифру 0?
так как ты и заметил она теряется во время инициализации
int mm = 06; - это mm == 6;
casper007
 Аватар для casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 391
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
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 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
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
06.03.2014, 12:25     Как перевести из WCHAR в int не потеряв цифру 0? #6
Цитата Сообщение от THE--MASTER Посмотреть сообщение
int mm = 06; - это mm == 6;
однако int mm = 012 - это нифига не 12 про это тоже надо помнить.
Ибо с нуля начинаются восьмеричные константы.
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 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++ Вывести наибольшую цифру числа типа long int
C++ Как перевести из char в int?
C++ Как скопировать часть массива WCHAR в массив BYTE?
Как может записаться CHAR в WCHAR ? C++
Перевести INT в STRING C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,918
Записей в блоге: 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?
Ответ Создать тему
Опции темы

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