Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: преобразование числа в строку  (Прочитано 5338 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Scot_Tenorman

  • Автор темы
  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #15 : 03 Февраля 2012, 16:23:07 »
Ответ я нашел.

Это вот так что-ли: static_cast<char>(int+48)??
во-первых статик_каст, это не преобразование типов, а приведение. Т.е. принудительное засовывание одного типа в объем памяти другого. Всему, что не поместилось, обрубаем ноги. Возможно, я не прав, но если int a = 42 с его помощью можно превратить в char *c = "42", то я обещаю пойти и почитать стандарт :)

Во-вторых, что будет, если число отрицательное?

Обрабатывать строку посимвольно.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #16 : 03 Февраля 2012, 16:36:23 »
Всё-таки s(n)printf - это функции языка С, если же мы хотим писать в стиле С++, то надо использовать потоки. Вот пример кода с потоками:
#include <iostream>
#include <sstream>

using std::string;
using std::stringstream;

int main()
{
string str;
stringstream ss(stringstream::in|stringstream::out);

ss << 123;
ss >> str;

std::cout << str << std::endl;
return 0;
}

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #17 : 03 Февраля 2012, 16:50:43 »
Обрабатывать строку посимвольно.

Стоп. Давайте с задачей определимся. Мы строку обрабатываем и превращаем в число, или число в строку? Что значит "строку посимвольно". Если прочитать название топика, то неясно, как с помощью посимвольной обработки некой строки превратить число в строку
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн Scot_Tenorman

  • Автор темы
  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #18 : 03 Февраля 2012, 16:56:52 »
Обрабатывать строку посимвольно.

Стоп. Давайте с задачей определимся. Мы строку обрабатываем и превращаем в число, или число в строку? Что значит "строку посимвольно". Если прочитать название топика, то неясно, как с помощью посимвольной обработки некой строки превратить число в строку
Значит по циферно. Находя остаток от деления на 10 при каждой итерации  и отбрасывая последнюю цифру.

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #19 : 03 Февраля 2012, 16:58:35 »
Ну я выше так и сказал. Тока зачем, если не ради спортивного интереса?

Пользователь решил продолжить мысль 03 Февраля 2012, 17:18:35:
на codepad.org вот это работает.
Код: ("C++") [Выделить]
#include <stdio.h>

int main()
{
   int a = 42;
   char buf[5];
   memset(buf,0,5);
   snprintf(buf,sizeof(buf),"%d",a);
   cout << buf;
return 0;
}
« Последнее редактирование: 03 Февраля 2012, 17:18:35 от Дядюшка Ау »
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5669
  • Все по палатам!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #20 : 03 Февраля 2012, 17:37:53 »
Жуть!  Ну и помесь С и С++!
Извините, я все еще учусь

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #21 : 03 Февраля 2012, 18:38:09 »
Жуть!  Ну и помесь С и С++!

Я и не претендую ни на что. Я говорю, что вот это работает, а статик_каст от числа - белиберда. Если заморачиваться с C/C++, то лучше строковые потоки. Просто они-то точно работают, а мне было интересно именно на С проверить. ltoa, оказывается от лукавого, нет такой функции...

Если вместо cout стоял бы printf("%s",buf) было бы лучше?
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #22 : 04 Февраля 2012, 08:06:44 »
Всё-таки s(n)printf - это функции языка С, если же мы хотим писать в стиле С++, то надо использовать потоки. Вот пример кода с потоками:
#include <iostream>
#include <sstream>

using std::string;
using std::stringstream;

int main()
{
string str;
stringstream ss(stringstream::in|stringstream::out);

ss << 123;
ss >> str;

std::cout << str << std::endl;
return 0;
}
Японский бог, ну ты точно придёшь первым в велогонке. посомтри как реализован boost::lexical_cast<>()

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #23 : 06 Февраля 2012, 11:21:32 »
А boost - это уже часть стандарта?
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #24 : 06 Февраля 2012, 13:07:10 »
не часть но скоро =)
можно начинать по маленьку осваивать

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #25 : 08 Февраля 2012, 12:12:14 »
#include<сstdlib>
using namespace std;
int main(){
int i=123;char s[300];
itoa(i,s,10);//itoa(число,указатель на строку в стиле Си,основание системы исчисления)

}
Что-то не так?
Ща придет Yurror, и в грубой форме начнет разбрасываться ссылками на этот же топик, где все сказано насчет itoa.
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #26 : 08 Февраля 2012, 16:52:44 »
#include<сstdlib>
using namespace std;
int main(){
int i=123;char s[300];
itoa(i,s,10);//itoa(число,указатель на строку в стиле Си,основание системы исчисления)

}
Что-то не так?
Эй, гений, а ты попробовал скомпилить своё поделие?
Иногда лучше жевать читать чем глупости постить.
Читай!

Дядюшка Ау, да бес толку это.
« Последнее редактирование: 08 Февраля 2012, 16:55:02 от Yurror »

Оффлайн Tempar

  • Новичок
  • *
  • Сообщений: 25
  • Не будите во мне тролля...
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #27 : 19 Февраля 2012, 10:01:03 »
#include<сstdlib>
using namespace std;
int main(){
int i=123;char s[300];
itoa(i,s,10);//itoa(число,указатель на строку в стиле Си,основание системы исчисления)

}
Что-то не так?
Эй, гений, а ты попробовал скомпилить своё поделие?
Иногда лучше жевать читать чем глупости постить.
Читай!

Дядюшка Ау, да бес толку это.

Ну простите меня, конченного виндузятника начинающего пользователя линукс , на винде компиллится.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #28 : 19 Февраля 2012, 14:06:24 »
Сходи по своей ссылке и прочитай раздел Portability

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: преобразование числа в строку
« Ответ #29 : 20 Февраля 2012, 00:10:15 »
мне вот интересно, а что, если применять функции языка С в коде С++ это извращение? вроде как С является частью С++.

 

Страница сгенерирована за 0.04 секунд. Запросов: 25.