Перейти к содержимому

Как записать 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?

Author24 — интернет-сервис помощи студентам

Как преобразовать строку string в int?
имеется строка string которая содержит такие наборы символов — "0,0,0,3,32,253,0,0,43" необходимо.

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

Как разделить и преобразовать строку из string в int?
Требуется создать приложение для нахождения максимального числа из строки. Поиск по форумам дал.

2096 / 1184 / 493
Регистрация: 11.10.2018
Сообщений: 5,956

По какому закону преобразование? Числа должны просто в строку? Или преобразовываются в символы?

Добавлено через 1 минуту

1 2 3 4
#include using namespace std; to_string();

6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726

ЦитатаСообщение от novichok875 Посмотреть сообщение

Как преобразовать массив int в строку типа string?

1 2 3 4 5 6 7 8 9
std::vectorint> arr(10); std::string s; for (auto x: arr) { s += std::to_string(x); s += ", "; } std::cout   ::endl;

Регистрация: 28.04.2020
Сообщений: 33

ЦитатаСообщение от FFPowerMan Посмотреть сообщение

По какому закону преобразование? Числа должны просто в строку? Или преобразовываются в символы?
Просто в строку
1583 / 1217 / 345
Регистрация: 14.05.2017
Сообщений: 3,939

ЦитатаСообщение от novichok875 Посмотреть сообщение

Просто в строку
числа в строке должны быть разделены пробелами или запятыми?
Регистрация: 28.04.2020
Сообщений: 33

ЦитатаСообщение от TRam_ Посмотреть сообщение

числа в строке должны быть разделены пробелами или запятыми?
1583 / 1217 / 345
Регистрация: 14.05.2017
Сообщений: 3,939

novichok875, если нет, то например из массива чисел 10,33,32,345,432 получится строка 103332345432, правильно?

2096 / 1184 / 493
Регистрация: 11.10.2018
Сообщений: 5,956

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include #include #include using namespace std; int main() { vectorint> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; string s; for(auto x: arr) s += to_string(x); cout   ; return 0; }

264 / 183 / 87
Регистрация: 03.05.2020
Сообщений: 790

1 2 3 4 5 6 7 8 9 10
int a[]={10,33,32,345,432}; int n=sizeof(a)/sizeof(int); char s[11]; string str=""; for(int i=0; in; i++) { itoa(a[i],s,10); str+=*new string(s); } coutc_str();

653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987

ЦитатаСообщение от AnyKey Посмотреть сообщение

str+=*new string(s);
я испугался, когда увидел эту ересь

Добавлено через 4 минуты

1 2 3 4 5 6 7 8 9 10 11
int a[] = { 10,33,32,345,432 }; int n = sizeof(a) / sizeof(int); char s[11]; string str = ""; while(1) { _itoa(a[0], s, 10); str += *new string(s); str.clear(); } cout  str.c_str()  endl;

если ты запустишь этот код, увидишь утечку памяти

Добавлено через 2 минуты
а этот её не имеет, поэтому не нужно лишний раз в С++ использовать new, особенно когда теряется указатель на его место

1 2 3 4 5 6 7 8 9 10 11
int a[] = { 10,33,32,345,432 }; int n = sizeof(a) / sizeof(int); char s[11]; string str = ""; while(1) { _itoa(a[0], s, 10); str += string(s); str.clear(); } cout  str.c_str()  endl;

264 / 183 / 87
Регистрация: 03.05.2020
Сообщений: 790

for(int i=0; in; i++) str+=itoa(a[i],s,10);

653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987

ЦитатаСообщение от AnyKey Посмотреть сообщение

str+=itoa(a[i],s,10);

уже лучше, только на кой хрен нужен сишный itoa при работе с C++ строками?

Добавлено через 2 минуты
вообще, мне кажется все сишные функции нужно запретить, как это сделано в VS (там нужно прописать #define _CRT_SECURE_NO_WARNINGS, чтобы эти функции компилились)

Комп_Оратор)

Эксперт по математике/физике

8940 / 4695 / 628
Регистрация: 04.12.2011
Сообщений: 13,987
Записей в блоге: 16

ЦитатаСообщение от novichok875 Посмотреть сообщение

Как преобразовать массив int в строку типа string?
Не существует такого преобразования.

ЦитатаСообщение от novichok875 Посмотреть сообщение

Просто в строку

novichok875, говорит о том, что вы написали то чего сами не понимаете. Если разделителей нет то потеря информации неизбежна. В частности, нет однозначного обратного преобразования. То есть, к вопросу топика нужны строки с разъяснением того, что имеется в виду под:

ЦитатаСообщение от novichok875 Посмотреть сообщение

преобразовать массив int в строку типа string
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как преобразовать строку в массив String []?
Есть переменная, в которой записан текст из файла. Эту переменную необходимо преобразовать в.

Как преобразовать число типа int в строку типа string без методов-конвертов на C#?
В общем, все что выше написано. Пишу в Visual Studio на C#. Преобразовать без конвертирования.

Не могу нигде найти — как преобразовать массив int в строку, или сразу в число
Народ помогите пожалуйста. Число long 9876543210 было переведено в int namArr = .

Преобразовать массив String в двумерный массив int
Всем привет. Имеется массив String a, в котором хранятся числа. Требуется преобразовать его в.

Как преобразовать String^ в int ?
Есть строка Srting^ str=gcnew String("123"); Возможно ли преобразовать эту строку в число int.

Как преобразовать string в int ? С++
Здравствуйте, можете объяснить как преобразовать string в int ? С++. Объясните как можно проще.

Или воспользуйтесь поиском по форуму:

Как записать 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; >

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

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

anonymous
( 06.12.04 10:36:48 MSK )

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

anonymous
( 06.12.04 10:38:04 MSK )
Ответ на: комментарий от anonymous 06.12.04 10:36:48 MSK

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

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

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

int19h ★★★★
( 06.12.04 11:18:06 MSK )
Ответ на: комментарий от anonymous 06.12.04 10:36:48 MSK

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

hapchu ★★
( 06.12.04 11:19:09 MSK )
Ответ на: комментарий от anonymous 06.12.04 10:38:04 MSK

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

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

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

LX ★★
( 06.12.04 17:09:41 MSK )
Ответ на: комментарий от int19h 06.12.04 11:22:33 MSK

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

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

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