С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.03.2014, 11:26. Просмотров 277. Ответов 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?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 11:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевести из WCHAR в int не потеряв цифру 0? (C++):

Перевести wchar в char - C++
Здравствуйте! Подскажите как перевести wchar в char? (MS Visual C++)

Как цифру преобразовить с типа String в тип int ? - C++
в типе char это функция atoi а в динамической строке?

Как перевести из char в int? - C++
нужно присвоить значение массива char A в int B, например B=A, но выбивает ошибку, пробовал B=atoi(&amp;A); но выбивает другое число

как перевести WORD в INT - C++
Всем привет. Продолжаю изучение WinApi. Возник такой вопрос. Я выделяю текст в EditBox , и получаю позиции выделенного текста таким...

как можно перевести `int*' to `UINT' - C++
Есть программа в которой нужно отмечать сохраненные пункт меню. Решил данные об отмеченых пунктах записывать в реестр, после запуска...

Как массив char[4] перевести в unsigned int? - C++
Есть массив из 4х char символов (4-е байта), нужно его перевести в unsigned int. Я сделал втупую: unsigned int B=0; ...

7
THE--MASTER
Заблокирован
06.03.2014, 11:37 #2
Цитата Сообщение от casper007 Посмотреть сообщение
ростите, в заголовке темы ошибка. Правильно: Как перевести из int в WCHAR не потеряв цифру 0?
так как ты и заметил она теряется во время инициализации
int mm = 06; - это mm == 6;
0
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 401
06.03.2014, 11:40  [ТС] #3
Цитата Сообщение от THE--MASTER Посмотреть сообщение
так как ты и заметил она теряется во время инициализации
А как тогда добавить этот ноль в символьный массив?
0
THE--MASTER
Заблокирован
06.03.2014, 12:00 #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);
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.03.2014, 12:22 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На мой взгяд проще всего так:
C++
1
2
3
int m = 6;
char date[3];
sprintf( date, "%02d", m );
Для UNICODE по-аналогии..
1
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
06.03.2014, 12:25 #6
Цитата Сообщение от THE--MASTER Посмотреть сообщение
int mm = 06; - это mm == 6;
однако int mm = 012 - это нифига не 12 про это тоже надо помнить.
Ибо с нуля начинаются восьмеричные константы.
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.03.2014, 16:04 #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 должно быть двузначным или однозначным числом.
0
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 17
06.03.2014, 17:19 #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;
}
0
06.03.2014, 17:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2014, 17:19
Привет! Вот еще темы с ответами:

Как перевести CString -ское число в Int? - C++
Есть CString -ское число. Как перевести это число в int??? Вот: { m_cap = m_cap + '1'; m_cap = c; int c = attol(m_cap); c =...

Как правильно перевести int и string в *char для записи в SQLlite? - C++
Доброго времени суток! Вопрос такой: Каким образом обычно переводятся значения типа int и string в SQL-запрос типа *char ? Вот...

Есть переменная типа char содержащая цифру; как записать это значение в переменную типа int? - C++
Пожалуйста, напомните стандартную функцию

Как может записаться CHAR в WCHAR ? - C++
Всё никак не пойму с этими кодировками символов. Мне нужны точные данные из окна EDIT независимо от кодировок. Вот есть 8 бит -...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.