Как int перевести в string c
Перейти к содержимому

Как int перевести в string c

  • автор:

Как int (число) превратить в char (строку) в СИ

Но он выводит на экранчик отладочной платы(Explorer 16) полную белиберду. Библиотека #include не поддерживаеться. В связи с тем что программа пишется в MPLAB для микроконтроллера семейства dsPIC33 (почему то не поддерживает эту библиотеку).

Отслеживать
задан 8 авг 2018 в 12:57
2,907 7 7 золотых знаков 44 44 серебряных знака 87 87 бронзовых знаков
atoi объявлен в
8 авг 2018 в 13:05
@acade поправил
8 авг 2018 в 13:12
А сколько там бит в байте? 256 — это 0 mod 256.
8 авг 2018 в 13:13
@bipll поправил
8 авг 2018 в 13:15
@timob256, stdlib.h тоже не поддерживает?
8 авг 2018 в 13:16

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Первый параметр: число которое необходимо преобразовать в строку (int)

Второй параметр: указатель на строку, куда необходимо записать преобразованное число.

Третий параметр: Система счисления, по которой происходит перевод числа

Использование функции itoa в вашем случае:

int adcResult = 333; // исходное число char adcString[15]; // буфер, в которую запишем число itoa(adcResult, adcString, 10); // вместо третьего параметра // можете написать нужное вам значение // например перевести в 16-ричную с.счисления 

puts_lcd необходимо вызвать следующим образом:

puts_lcd(adcString, strlen(adcString)); 

Как int перевести в string c

Спасибо! Попробую.
Можно еще один вопросик в догонку?
Как перевести число из DEC в HEX и наоборот?
В VB, например, есть такая функция Hex().

Re[3]: int в string

От: Mishka
Дата: 13.05.02 15:02
Оценка:

Здравствуйте Аноним, Вы писали:

А>Как перевести число из DEC в HEX и наоборот?
А>В VB, например, есть такая функция Hex().

А зачем? Вот пример:

#include int main() < int x = 0xFF; int y = 255; std::cout " " return 0; >

Re[4]: int в string

От: epitaph
Дата: 13.05.02 15:05
Оценка:

Здравствуйте Mishka, Вы писали:

M>Здравствуйте Аноним, Вы писали:

А>>Как перевести число из DEC в HEX и наоборот?
А>>В VB, например, есть такая функция Hex().

M>А зачем? Вот пример:
M>

M>#include M>int main() M> < M>int x = 0xFF; M> int y = 255; M> std::cout " " return 0; M>> M>

Спасибо. Буду дерзать дальше.

Re[5]: int в string

От: epitaph
Дата: 13.05.02 15:17
Оценка:

Здравствуйте epitaph, Вы писали:

E>Здравствуйте Mishka, Вы писали:

M>>Здравствуйте Аноним, Вы писали:

А>>>Как перевести число из DEC в HEX и наоборот?
А>>>В VB, например, есть такая функция Hex().

M>>А зачем? Вот пример:
M>>

M>>#include M>>int main() M>>< M>> int x = 0xFF; M>> int y = 255; M>> std::cout " " > return 0; M>>> M>>

E>Спасибо. Буду дерзать дальше.

Да, как объявить понятно, а как перевести y = 255 в HEX и получить ответ, например, в x?

Re[6]: int в string

От: Mishka
Дата: 13.05.02 15:55
Оценка:

Здравствуйте epitaph, Вы писали:

E>Да, как объявить понятно, а как перевести y = 255 в HEX и получить ответ, например, в x?

Легко:
x = y;
Потому что всё равно числа там храняться как последовательность 0 и 1.

Я вообщем-то потому и спрашивал «а зачем». На экран надо вывести? Так это другой вопрос.

Re[7]: int в string

От: epitaph
Дата: 13.05.02 16:00
Оценка:

Здравствуйте Mishka, Вы писали:

M>Здравствуйте epitaph, Вы писали:

E>>Да, как объявить понятно, а как перевести y = 255 в HEX и получить ответ, например, в x?

M>Легко:
M>x = y;
M>Потому что всё равно числа там храняться как последовательность 0 и 1.

M>Я вообщем-то потому и спрашивал «а зачем». На экран надо вывести? Так это другой вопрос.

Да, надо вывести полученный результат на экран.
В принцыпе есть форма а в ней два текстовых поля —
в одном DEC, а в другом HEX.

Re: int в string

От: ioni
Дата: 13.05.02 18:11
Оценка:

Здравствуйте epitaph, Вы писали:

E>Помогите чайнику, ПЛИЗЗЗ.
E>Как преобразовать тип INT в STRING?

более общий способ туда и обратно

Re[4]: int в string

От: Алекс http://wise-orm.com
Дата: 14.05.02 02:34
Оценка:

Здравствуйте Mishka, Вы писали:

M>Здравствуйте Аноним, Вы писали:

А>>Как перевести число из DEC в HEX и наоборот?
А>>В VB, например, есть такая функция Hex().

M>А зачем? Вот пример:
M>

M>#include M>int main() M> < M>int x = 0xFF; M> int y = 255; M> std::cout " " return 0; M>> M>

Чуть-чуть не правильно:

int main() < int x = 0xFF; int y = 255; std::cout hex " " dec return 0;

Re[5]: int в string

От: Mishka
Дата: 14.05.02 07:20
Оценка:

Здравствуйте Алекс, Вы писали:

А>Чуть-чуть не правильно:
А>

А>int main() А> < А>int x = 0xFF; А> int y = 255; А> std::cout hex " " dec return 0; А>

Да не-е. Всё там правильно. Я просто хотел показать, что нет никакой разницы как хранить int в десятичной или в шестнадцатиричной форме.

Re[8]: int в string

От: Mishka
Дата: 14.05.02 07:23
Оценка:
#include using namespace std; void main() < int n = 255; char buffer[20]; _itoa(n, buffer, 16); cout

Как int перевести в string c

Нередко в программах встречается ситуация, когда надо преобразовать число в строку или строку в число. Для этой цели в стандартной библиотеке языка С определены функции strtol() и snprintf() .

Из строки в число. strtol

Функция strtol() преобразует строку в число типа long int . Функция определена в заголовочном файле stdlib.h и имеет следующий прототип:

long strtol(const char *restrict str, char **restrict str_end, int base);
  • str — строка с числом, которое надо преобразовать в числовой тип. Ключевое слово restrict указывает компилятору оптимизировать код и что никакой другой параметр не будет указывать на адрес данного параметра.
  • str_end — указатель на последний символ строки. Данный параметр можно игнорировать, передавая ему значение NULL
  • base — основание, система исчисления, в которую надо преобразовать данные (значение от 2 до 36).

Результатом функции является преобразованное число типа long .

Например, преобразуем строку в число в десятичной системе:

#include #include int main(void) < const char * str = "24 flowers"; long result = strtol(str, NULL, 10); printf("Result: %ld\n", result); // Result: 24 return 0; >

В примере выше второй параметр функции никак не использовался — мы ему передавали значение NULL , и функция нормально работала. Однако он может быть полезен, если нам надо получить остаток строки, которая идет после числа:

#include #include int main(void) < const char * str = "24 flowers"; char* str_end; long result = strtol(str, &str_end, 10); printf("Result: %ld\n", result); // Result: 24 printf("Rest of the string:%s\n", str_end); // Rest of the string: flowers return 0; >

Из числа в строку. snprintf

Функция snprintf() преобразует число в отформатированную строку. Функция определена в заголовочном файле stdio.h и имеет следующий прототип:

int snprintf(char *restrict str_buffer, size_t buffer_size, const char *restrict format, . );
  • str_buffer — строка, в которую помещается преобразованное число.
  • buffer_size — максимальное количество символов строки. Функция записывает в строку buffer-size — 1 байт и добавляет концевой нулевой байт
  • format — задает формат преобразования в строку.

При успешном преобразовании функция возвращает количество символов, записанных в строку (исключая концевой нулевой байт). При неудачном преобразовании возвращается отрицательное число.

#include int main(void) < int number = 354; char str [10]; snprintf(str, sizeof str, "%d", number); printf("Result: %s\n", str); // Result: 354 return 0; >

При этом строка форматирования может содержать множество параметров:

#include int main(void) < int count = 3; double price = 79.99; char str [50]; snprintf(str, sizeof str, "Count: %d \tPrice: %.2f", count, price); printf("%s\n", str); // Count: 3 Price: 79.99 return 0; >

Re: Re: c++, преобразование int в string

Спасибо. А что предпочтительнее с точкие зрения производитеьности/правильности?

anonymous
( 06.12.04 10:36:48 MSK )

Re: c++, преобразование int в string

нужно выделить место под строчку! если дленна строки будет не больше len, то надо делать так

anonymous
( 06.12.04 10:38:04 MSK )
Ответ на: Re: Re: c++, преобразование int в string от anonymous 06.12.04 10:36:48 MSK

Re: Re: Re: c++, преобразование int в string

> Спасибо. А что предпочтительнее с точкие зрения производитеьности/правильности?

С точки зрения правильности — однозначно вариант с std::stringstream. Кстати его можно записать и в одну строчку:

С производительностью сложнее. С одной стороны, ostringstream не нужно тратить в рантайме время на парсинг строки формата. С другой, ему приходится динамически выделять память под буфер, плюс при возврате его из str() текст копируется, так что имеем еще и накладные расходы на создание std::string. Так что, скорее всего, s(n)printf быстрее.

int19h ★★★★
( 06.12.04 11:18:06 MSK )
Ответ на: Re: Re: c++, преобразование int в string от anonymous 06.12.04 10:36:48 MSK

Re: Re: Re: c++, преобразование int в string

Насчет производительности правильности — это религиозный вопрос. Первый вариант — это С (за исключением std::cout, в С используется printf). Второй вариант — С++.

hapchu ★★
( 06.12.04 11:19:09 MSK )
Ответ на: Re: c++, преобразование int в string от anonymous 06.12.04 10:38:04 MSK

Re: Re: c++, преобразование int в string

Угу, а высвобождать потом память кто будет? Если уж len известна — проще всего объявить локальный массив. Если нет — не забываем free(). Ну и вместо malloc(len) чисто субъективно все же плюсовей будет new char[len].

int19h ★★★★
( 06.12.04 11:22:33 MSK )

Re: c++, преобразование int в string

int i = 5;
ostringstream oss_convert;
oss_convert return oss_convert.str();

LX ★★
( 06.12.04 17:09:41 MSK )
Ответ на: Re: Re: c++, преобразование int в string от int19h 06.12.04 11:22:33 MSK

Re: Re: Re: c++, преобразование int в string

Ога. Теперь еще добавим, что в процессе может например из sprintf’a или из cout’а вылететь exception, память все равно может оказаться не очищеной ;). Может strstream и медленнее, но зато надежнее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *