Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/390: Рейтинг темы: голосов - 390, средняя оценка - 4.51
10 / 10 / 6
Регистрация: 27.07.2014
Сообщений: 269

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

21.11.2014, 19:39. Показов 80294. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как преобразовать 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 ?)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2014, 19:39
Ответы с готовыми решениями:

Как int преобразовать в char?
простите за глупый вопрос)) но у меня есть какое нибудь int x=1234 к примеру, как преобразовать это число в char s=&quot;1234&quot;

Как преобразовать Int в char*?
Доброго времени суток. У меня есть переменная int, в которой однозначное число, как его преобразовать в char*?

Как преобразовать int в char?
Прошу подсказать, как же все-таки преобразовывать int в char?

15
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.11.2014, 19:46
Число в строку преобразовать? Пример.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
21.11.2014, 21:44
Если нужно из 5 получить '5', то так
C++
1
char dig = (char)(((int)'0')+i);
Но работать будет только для чисел <= 9.
3
10 / 10 / 6
Регистрация: 27.07.2014
Сообщений: 269
21.11.2014, 21:59  [ТС]
Ну допустим. а почему не работает (char)i ?)

Добавлено через 6 минут
Что характерно, вот это:
char dig = (char)(((int)'0')+i);
равно вот этому:,
char dig = ((int)'0')+i;
Работает ли приведение к char через (char)... ?) такое ощущение, что оно есть, что его нету...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.11.2014, 22:38
Не работает. Используй функции.
1
10 / 10 / 6
Регистрация: 27.07.2014
Сообщений: 269
21.11.2014, 22:53  [ТС]
Ну я понимаю, что есть куча функций на все, но есть понятия привидения типов, которое почему то не работает, хотя ведь не выдает компилятор, что его нету к char
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.11.2014, 22:56
Приведение типов относится к числам, именно так и интерпретируется char - однобайтное целое со знаком, к символам это не относится.
1
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 3
21.11.2014, 23:57
Есть такая функция 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.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
22.11.2014, 00:04
Цитата Сообщение от 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)
увидишь десятичные, шестнадцатеричные значения и символы
1
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 3
22.11.2014, 00:22
Возможен еще такой вариант, с использованием функции 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
0
2 / 5 / 0
Регистрация: 06.11.2011
Сообщений: 277
06.09.2021, 10:23
p=i+'0';
0
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
06.09.2021, 10:34
C++
1
2
3
4
5
6
7
8
#include <iostream>
int main()
{
    int a = 5;
    char ch = a + 48;
    std::cout << ch;
    return 0;
}
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
06.09.2021, 14:02
sergey.shuvalov, ram876,
int a=125;

сработает ваш код или нет?
0
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
06.09.2021, 14:16
ValeryS, предположу, что если не выходит за рамки таблицы ASCII, то должно сработать, но там после 126 идут специфические символы и кириллица, наверно еще локаль надо настроить.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
06.09.2021, 14:33
Цитата Сообщение от ram876 Посмотреть сообщение
что если не выходит за рамки таблицы ASCII, то должно сработать,
сработает если не выходить из диапазона цифр 0-9
тогда прибавлением 48 она же '0' она же 0x30 цифра превратится в символ '0'-'9'

Добавлено через 1 минуту
таблица ASCII имеет 128 ячеек, расширенная 256 как раз диапазон char
1
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
06.09.2021, 15:07
Цитата Сообщение от ValeryS Посмотреть сообщение
int a=125;
сработает ваш код или нет?
это же управляющий символ "format c"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2021, 15:07
Помогаю со студенческими работами здесь

Как преобразовать строку char в массив int?
Дана строка символов S, состоящая из чисел, разделенных пробелами Нужно выделить числа и засунуть их в массив типа int; Как можно это...

Преобразовать int в char
Всем привет, пытаюсь разобраться с типами данных Интересует конвертация массива int в массив char уже часа с полтора сижу, постоянно...

Преобразовать int в char *
Есть какое-то целое число. Допустим 12451243. Его необходимо преобразовать в строку. У меня есть поле TenString (десят. строка),...

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Преобразовать символы из массива char в массив int
Нужно ввести символы числа в строку, а потом символы из неё последовательно записать в массив int char user_text; //Строка ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru