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

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

Войти
Регистрация
Восстановить пароль
 
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
#1

конвертирование (char)int (char*)int - C++

10.10.2012, 17:50. Просмотров 1117. Ответов 7
Метки нет (Все метки)

Вопрос такой каким образом можно выполнить вот такую операцию:

у нас есть:
C++
1
2
int c = 12;
char d[] = ''PS ";
Получиться должно PS 12 - типа char.
Пробовал так:
C++
1
2
3
int c = 12;
char d[] = "PS ";
strcat(d, (char)c);
и так
C++
1
2
3
int c = 12;
char d[] = "PS ";
strcat(d, char(c));
и даже так
C++
1
2
3
int c = 12;
char d[] = "PS ";
strcat(d, (char*)c);
Программа виснет и выдаёт ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 17:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос конвертирование (char)int (char*)int (C++):

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Конвертирование char в int - C++
Перевожу char в int, но на выходе неверное число, вот упрощений вариант: #include <iostream.h> main() { char c = '1'; ...

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

Форматирование строк, char to int & int to char - C++
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

Подскажите пожалуйста с int main(int argc, char*argv[]) - C++
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc>1 то программе передан хотя бы один аргумент, если...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

7
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
10.10.2012, 18:00 #2
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main() {
    char d[6];
    int c = 12;
    sprintf(d, "PS %d", c);
    puts(d);
}
1
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.10.2012, 18:02 #3
  • std::to_string + std::basic_string::c_str()
  • std::basic_stringstream
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str("PS ");
    const auto c = 12;
    std::cout << (str + std::to_string(c)) << std::endl;
    std::ostringstream oss;
    oss << str << c;
    std::cout << oss.str() << std::endl;
    return 0;
}
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
10.10.2012, 18:07 #4
Ты путаешь приведение типов и конвертацию числа в строку и обратно.
Есть boost::lexical_cast (по тестам один из самых быстрых методов конверсии).
1
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
10.10.2012, 18:14  [ТС] #5
качаю качаю boost, знаю что там много чё классного есть. Никогда не пользовался им. Есть где нибудь фак по нему на русском?

Добавлено через 58 секунд
Герц, можешь привести полный шаблон функции lexical_cast, пожалуйста!
0
Петррр
5962 / 3399 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
10.10.2012, 18:16 #6
Цитата Сообщение от No10 Посмотреть сообщение
Есть где нибудь фак по нему на русском?
Будет круто если Вы его напишите
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.10.2012, 18:19 #7
Цитата Сообщение от No10 Посмотреть сообщение
полный шаблон функции lexical_cast
Реализацию? Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <sstream>
 
template <class T_out, class T_in>
T_out lexical_cast(T_in x)
{
   std::stringstream sst;
   sst << x;
   T_out res;
   sst >> res;
   return res;
}
 
int main()
{
   std::cout << lexical_cast<int>("12344") + 1 << std::endl;
}
Бустовская версия используется аналогичным образом.
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
10.10.2012, 19:15 #8
Только в бустовской версии нет stringstream начиная с какой-то версии.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 19:15
Привет! Вот еще темы с ответами:

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

[BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)' - C++
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;windows.h&gt; #include&lt;cstring.h&gt; #include&lt;string.h&gt; ...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int - C++
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char, и еще число int?

Что есть argc и **argv в функции int main(int argc, char **argv)? - C++
Здраствуйте, уважаемые кодеры! Что означает argc и **argv в функции int main(int argc, char **argv), ни как не могу понять эти переменные...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
10.10.2012, 19:15
Ответ Создать тему
Опции темы

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