Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 167
1

Преобразование int в string с сохранением нулей

22.01.2015, 21:03. Показов 4363. Ответов 19
Метки нет (Все метки)

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

C++
1
2
int a = 00000;
printf("%09d", a);
Благодаря 09d сохраняет все нули и выводит 00000

А вот еще код

C++
1
2
3
int a = 00000;
char buff[10];
string str=itoa(a, buff, 10);
А теперь если я выведу str то получу 0. Как сохранить все нули??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2015, 21:03
Ответы с готовыми решениями:

Преобразовать int в string без обрезки нулей
Всем привет! Из строки браузера приходит id в int. Как преобразовать int в string с...

Преобразование String в int
Здравствуйте! У меня здесь вот такой вопрос? У меня есть String s = "Kurmanov Seit 96"; и...

Преобразование string в int
Здравствуйте, прошу помощи со следующей проблемой: при считывании массива чисел из текстового файла...

Преобразование string в int
Спасибо Добавлено через 30 минут private void textBox1_TextChanged(object sender,...

19
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 21:07 2
C++
1
sprintf(buff,"%09d", a);
Добавлено через 1 минуту
Цитата Сообщение от Igor Fender Посмотреть сообщение
09d сохраняет все нули и выводит 00000
а должон вывести 000000000
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.01.2015, 21:11 3
Ноли выводит printf, в переменной они не сохраняются.
Если ты напишешь int a = 0; в первом примере, то результат не изменится.
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 21:21 4
Цитата Сообщение от Байт Посмотреть сообщение
а должон вывести 000000000
а может не должон
Цитата Сообщение от Igor Fender Посмотреть сообщение
int a = 00000;
это восьмеричное значения, я с ними серьезно не работал
хотя с точки зрения логики ноль он и есть ноль хоть в какой системе
Цитата Сообщение от Igor Fender Посмотреть сообщение
А теперь если я выведу str то получу 0. Как сохранить все нули??
никак
или сохраняй свои числа в виде строки
при позиционной системе, и не только в компе, незначащие 0 отбрасываются
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 21:26 5
Цитата Сообщение от ValeryS Посмотреть сообщение
а может не должон
Чавой-то вдруг?
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 21:27 6
есть еще вариант
если фиксированный размер числа допустим 10 цифр
C++
1
2
3
4
5
6
7
char buf[11];
for(int i=9;i>-1;i--)
  {
    buf[i]=a%10+'0';
    a/=10;
  }
buf[10]=0;
Добавлено через 1 минуту
Цитата Сообщение от Байт Посмотреть сообщение
Чавой-то вдруг?
дык кто его знает
не работал я с восмеричными
кстати не знаешь а где сия система используется
1
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 21:31 7
Цитата Сообщение от ValeryS Посмотреть сообщение
есть еще вариант
Если не считать мелкой описки (i<0), должно работать. Однако, зачем нам делать то, с чем прекрасно справляется форматированный вывод? Эти функции создавались опытными программерами (не нам чета ) Их работоспособность проверена веками.
0
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
22.01.2015, 21:35 8
а что значит все нули?
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 21:37 9
Цитата Сообщение от Байт Посмотреть сообщение
Если не считать мелкой описки (i<0),
а я уже поправился
Цитата Сообщение от Байт Посмотреть сообщение
Однако, зачем нам делать то, с чем прекрасно справляется форматированный вывод?
нам незачем, но внутренности знать неплохо
хотя вот недавно писал для микроконтроллера, вывод на дисплей, нужно было три разряда выводить
и
Цитата Сообщение от Байт Посмотреть сообщение
sprintf
мне столько лишнего нагенерил и тормознуто все, пришлось ручками

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

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Их работоспособность проверена веками.
ну это ты сгоряча, компы то в 40х годах 20 века изобретены:)

0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 21:39 10
Цитата Сообщение от ValeryS Посмотреть сообщение
дык кто его знает
Можешь мне поверить на слово.
Цитата Сообщение от ValeryS Посмотреть сообщение
не работал я с восмеричными
А где ты их здесь разглядел? 0 - он и есть 0. В любой с/с. Можно написать 0000000000, от этого ничего не изменится.
Цитата Сообщение от ValeryS Посмотреть сообщение
а где сия система используется
Где (вернее - кем) хочешь. Машина использует двоичную. Чтоб сэкономить бумагу, записывают в 16-тиричной. А можно в 8-ричной - бумаги уходит поболее, но смотреть приятнее. Можно и в 256-ричной - это всего лишь наши, человечьи, способы записи. А машине все это по барабану. Лишь бы правильно перевели в ее, родной, двоичный.

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

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
ну это ты сгоряча, компы то в 40х годах 20 века изобретены
Что, уже такие безобидные гиперболы здесь не катят?

0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 21:42 11
Цитата Сообщение от Байт Посмотреть сообщение
А где ты их здесь разглядел?
первый 0 перед числом признак восмеричности
так же как 0x00 шеснадцетиричная

Цитата Сообщение от Байт Посмотреть сообщение
0 - он и есть 0. В любой с/с. Можно написать 0000000000, от этого ничего не изменится.
ну а я как сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
хотя с точки зрения логики ноль он и есть ноль хоть в какой системе
Цитата Сообщение от Байт Посмотреть сообщение
Где (вернее - кем) хочешь. Машина использует двоичную.
нук это я знаю, все для удобства человека
но ни разу не видел в программах восьмеричную, зачем её в язык ввели? уж лучше бы двоичную
0
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
22.01.2015, 21:46 12
дядьки, вы так горячо спорите...
Но
сколько нулей хочет ТС?
СРР его знает...
0
castaway
22.01.2015, 21:47
  #13

Не по теме:

Ребят, может вы создадите отдельную тему чтобы оффтопить и холиварить!?

0
ValeryS
22.01.2015, 21:47
  #14

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Что, уже такие безобидные гиперболы здесь не катят?
катят, катят:)

0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 21:53 15
sprintf мне столько лишнего нагенерил и тормознуто все, пришлось ручками
Вообще-то есть правило: если что не идет - ищи ошибку у себя. Библиотечные - они тоже не без багов. Но значительно больше вероятность, что баг в твоем свеженьком коде. А sprintf, да, он бесцеремонный. Ему плевать, сколько памяти ТЫ выделил на буфер. Он его заполняет, чем ты ему приказал. И может вылезти. Сейчас есть другие подобные функции, которые следят. Нормально работает QString с arg-ами. Другие string-подобные не знаю.
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 21:59 16
Цитата Сообщение от Байт Посмотреть сообщение
Но значительно больше вероятность, что баг в твоем свеженьком коде.
трудно испортить строку
C++
1
sprintf(buff,"%03d", a);
все дело в том что библиотечные они универсальные, на все случаи жизни, а мне нужна часть функциональности
нафига мне проверка %s %x и прочие если мне нужно только %d

Добавлено через 56 секунд
Цитата Сообщение от Байт Посмотреть сообщение
Сейчас есть другие подобные функции, которые следят. Нормально работает QString с arg-ами. Другие string-подобные не знаю.
все эти слежения лишние ресурсы, а микроконтроллеров их и так немного
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 22:11 17
Цитата Сообщение от ValeryS Посмотреть сообщение
но ни разу не видел в программах восьмеричную,
Энто ты по молодости лет... Вот Минск-22, Урал-14, там все в восьмеричной писали. 16-ричная пришла к нам из-за бугра, вместе с IBM-360 (сиречь ЕС-10хх). Вот лично я и по сей день лучше ее воспринимаю, чем все эти ABCDEF. Так что считай, разработчики языка сделали такой реверанс старперам.
Цитата Сообщение от castaway Посмотреть сообщение
может вы создадите отдельную тему чтобы оффтопить и холиварить!?
И назовем ее "00000". Как лодку назовешь - так она и поплывет!
Да вы не волнуйтесь, тема уже иссякает, никакой агрессией здесь и не пахнет, вот еще перепихнемся парой шуточек, и спать пойдем.

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
все эти слежения лишние ресурсы, а микроконтроллеров их и так немного
Согласен.
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 22:22 18

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Энто ты по молодости лет...
благодарствую, за комплимент:drink:
Цитата Сообщение от Байт Посмотреть сообщение
Вот Минск-22, Урал-14, там все в восьмеричной писали.
действительно, не удосужился:)
мой первый комп это самоспаяный "Спецалист" на 580ВМ80, сиречь i8080

может тему к себе заберешь в "Зашиту оффтопа"?:)


Цитата Сообщение от saden Посмотреть сообщение
сколько нулей хочет ТС?
молчит, как партизан
плавающие не получится только фиксируемые
Цитата Сообщение от castaway Посмотреть сообщение
тему чтобы оффтопить
есть уверенность что все знают
что 10 и 010 это разные числа?
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
22.01.2015, 22:28 19
Цитата Сообщение от ValeryS Посмотреть сообщение
может тему к себе заберешь в "Зашиту оффтопа"
А и ты сам могешь. Тема-то открытая. Если потерял - https://www.cyberforum.ru/math... 35225.html

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
есть уверенность что все знают что 10 и 010 это разные числа?
За всех не скажу, но я знаю. 10 > 010
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,690
22.01.2015, 22:32 20
Цитата Сообщение от Байт Посмотреть сообщение
10 > 010
я бы добавил
0x10>10>010>10b(этот двоичное представление есть в некоторых диалектах)
0
22.01.2015, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2015, 22:32
Помогаю со студенческими работами здесь

Преобразование string в int
Помогите пожалуйста с преобразованием string к типу int, быть может не напрямую но хоть как нибудь,...

Преобразование string в int
Банальный вопрос. Как преобразовать строковую переменную в число? Везде вижу один и тот же...

Преобразование string в int
Всем привет, нужно преобразовать string в int #include &lt;iostream&gt; #include &lt;stdlib.h&gt;...

Преобразование string[] в int[]
Не могу найти по поиску.. Подскажите как преобразовать массив строк в массив целочисленных...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru