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

Как преобразовать int в char - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
AVATAR
4 / 4 / 2
Регистрация: 27.07.2014
Сообщений: 226
21.11.2014, 19:39     Как преобразовать int в char #1
Подскажите пожалуйста как преобразовать int в char
Есть код к примеру:

C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main(){
 
    char p;
    int i=3;
    p=i;
    cout<<p<<endl;
    system("pause");
    return 0;
}
Проблема в том, что если я даже напишу p=(char)i - приведение не работает, по крайне мере выводится левый символ, чего я незнаю ?) вообще мне поидее надо в определенные элементы символов присваивать числа, но на таком элементарном запоролся...

Добавлено через 1 минуту
Предполагаю, если в cout<<p+0<<endl; // должно сработать, потому что я пробывал, правда не для нуля, ну число сразу складывалось стругим, ну я думаю можно как то по естественее это провернуть, не ужели приведение не работает в таком случае из int в char ?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4267 / 3698 / 1245
Регистрация: 14.04.2014
Сообщений: 14,482
21.11.2014, 19:46     Как преобразовать int в char #2
Число в строку преобразовать? Пример.
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
21.11.2014, 21:44     Как преобразовать int в char #3
Если нужно из 5 получить '5', то так
C++
1
char dig = (char)(((int)'0')+i);
Но работать будет только для чисел <= 9.
AVATAR
4 / 4 / 2
Регистрация: 27.07.2014
Сообщений: 226
21.11.2014, 21:59  [ТС]     Как преобразовать int в char #4
Ну допустим. а почему не работает (char)i ?)

Добавлено через 6 минут
Что характерно, вот это:
char dig = (char)(((int)'0')+i);
равно вот этому:,
char dig = ((int)'0')+i;
Работает ли приведение к char через (char)... ?) такое ощущение, что оно есть, что его нету...
nmcf
4267 / 3698 / 1245
Регистрация: 14.04.2014
Сообщений: 14,482
21.11.2014, 22:38     Как преобразовать int в char #5
Не работает. Используй функции.
AVATAR
4 / 4 / 2
Регистрация: 27.07.2014
Сообщений: 226
21.11.2014, 22:53  [ТС]     Как преобразовать int в char #6
Ну я понимаю, что есть куча функций на все, но есть понятия привидения типов, которое почему то не работает, хотя ведь не выдает компилятор, что его нету к char
nmcf
4267 / 3698 / 1245
Регистрация: 14.04.2014
Сообщений: 14,482
21.11.2014, 22:56     Как преобразовать int в char #7
Приведение типов относится к числам, именно так и интерпретируется char - однобайтное целое со знаком, к символам это не относится.
7ckngMad
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 3
21.11.2014, 23:57     Как преобразовать int в char #8
Есть такая функция itoa() преобразует целое число в строку в формате основания числа. К цифрам числа подбираются ANSI символы типа char и записываются в строку. При числе, имеющем количество цифр, большее, чем размер строки, функция выдаст ошибку. Поэтому нужно устанавливать размер с запасом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()  {
        char * argv = new char[255];    //наш массив символов для хранения числа
        int argc = 372;                 //само число
 
        _itoa(argc,argv,10);            //функция преобразования числа в строку, где
                                        //argc - число, argv - массив символов, 10 - основание, т.е. система счисления.
        cout << argv << '\n';
 
        delete argv;                    //освобождаем память, выделенную под наш массив
 
        system("pause");
        return 0;
}
Добавлено через 2 минуты
Ах да, не обязательно ставить размер массива, как в примере, т.е. 255. В данном случае будет достаточно 4.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.11.2014, 00:04     Как преобразовать int в char #9
Цитата Сообщение от AVATAR Посмотреть сообщение
Проблема в том, что если я даже напишу p=(char)i - приведение не работает,
работает, работает
в char тоже число 3
но когда
выводишь на экран
Цитата Сообщение от AVATAR Посмотреть сообщение
cout<<p<<endl;
то cout устроена так что видя char выводит ANSI символы, а код 3 это непечатный символ
например написав так
C++
1
2
3
4
  char p;
    int i=48;
    p=i;
    cout<<p<<endl;
на экране увидишь "0"
посему выводить нужно так
C++
1
cout<<(int)p<<endl;
опять приводить к int
тогда cout выведет значения а не ANSI символ

вот попробуй так
C++
1
2
for(unsigned char a=1;a;a++)
 printf("%d %x %c \n",a,a,a)
увидишь десятичные, шестнадцатеричные значения и символы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 00:22     Как преобразовать int в char
Еще ссылки по теме:

C++ Преобразовать число int в строку прописью char
C++ Невозможно преобразовать параметр из int в const char
C++ Как преобразовать строку char в массив int?

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

Или воспользуйтесь поиском по форуму:
7ckngMad
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 3
22.11.2014, 00:22     Как преобразовать int в char #10
Возможен еще такой вариант, с использованием функции snprintf()

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int _tmain(int argc, char * argv)   {
 
        int number = 1948575;
        char buffer [128];
 
        argc = _snprintf(buffer, sizeof(buffer), "%d", number);
        argv = buffer;
 
        cout << argv << '\n';
 
        system("pause");
        return 0;
}
Добавлено через 4 минуты
Ну, а если ты хочешь использовать унарную операцию приведения типа int в char, то при использовании оператора вывода cout, на экран будут выводиться символы ASCII
Yandex
Объявления
22.11.2014, 00:22     Как преобразовать int в char
Ответ Создать тему
Опции темы

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