Головна Обговорення Лінки Пошук Prykladna СС Прикладна _КОЛЕДЖ 13.08.2026 04:17:00 (EEST=GMT+2)
ACM -
Навігація -
Теми форуму +
Чи знали ви, що... ? (beta) -
Іспанська інквізиція якось засудила до смерті за єресь цілу країну — Нідерланди.
Події
ПнВтСрЧтПтСбНд
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Birthday(s):
AVATARgenerak13
AVATARKsvirik
AVATARIvanKu
AVATARhomemasters

Перегляд теми
ACM Контестер | Технічні Питання | Робота сайту
Автор int <--> string
dector
Користувач

Повідомлень: 14
Зареєстрований: 29.02.08
Опубліковано 18-02-2009 21:36
Розумію, що трохи не туди, але вибачте(

В олімпіадних задачах інколи треба представити число як текстову стрічку. у паскалі є власні вбудовані функції - гарно.

як у с++ панове переводять int -> string.
ну і навпаки string -> int

допоможіть, будь ласка. :(
415231702 imodeling.info Надіслати приватне повідомлення
Автор RE: int <--> string
webmaster
Головний Адміністратор

Аватар користувача

Повідомлень: 1136
Зареєстрований: 17.03.07
Опубліковано 26-02-2009 10:19
Щоб перевести у String:
  1. int a =123;
  2. char buf[100];
  3. sprintf(buf,"%d", a);
  4. string s = buf;


Щоб із String'а:
  1. string s = "123";
  2. sscanf(s.c_str(),"%d", &a);


Змінив(ла) webmaster, 26-02-2009 11:01
brus07 brus07 (Lviv NU) http://acm.lviv.ua Надіслати приватне повідомлення
Автор RE: int <--> string
webmaster
Головний Адміністратор

Аватар користувача

Повідомлень: 1136
Зареєстрований: 17.03.07
Опубліковано 26-02-2009 10:34
Також можна виводити у довільному форматі (так само як і у printf(...)).
  1. int a =123;
  2. double d = 123.4567;
  3. string s = "strings";
  4. char buf[100];
  5. sprintf(buf,"%s = %d / %.2lf", s.c_str(), a, d);
  6. s = buf;

brus07 brus07 (Lviv NU) http://acm.lviv.ua Надіслати приватне повідомлення
Автор RE: int <--> string
Ostap
Модератор

Повідомлень: 426
Звідки: ЛНУ, Прикладна, ПМІ-81
Зареєстрований: 03.03.06
Опубліковано 26-02-2009 12:38
А якщо Ви звикли більше до потокового вводу/виводу (cin/cout), то тоді можна використовувати stringstream:
  1.  
  2. #include <sstream>
  3. using namespace std;
  4. ...
  5. int a;
  6. string s;
  7. // int->string
  8. a = 47;
  9. ostringstream os;
  10. os << a;
  11. s = os.str();
  12. // string->int
  13. s = "74";
  14. istringstream is(s);
  15. is >> a;




Не помиляється той, хто нічого не робить!
Ostap 200-738-699 Ostap Korkuna (Lviv NU) Надіслати приватне повідомлення
Автор RE: int <--> string
Ostap
Модератор

Повідомлень: 426
Звідки: ЛНУ, Прикладна, ПМІ-81
Зареєстрований: 03.03.06
Опубліковано 26-02-2009 12:45
Ну і є ще один супершвидкий спосіб:
  1. string ss = "124";
  2. int x = atoi(ss.c_str());


Є також функція itoa (для перетворення з int до стрічки), але вона трохи складніша. Якщо зацікавить, знайдіть її опис в інтернеті.


Не помиляється той, хто нічого не робить!
Ostap 200-738-699 Ostap Korkuna (Lviv NU) Надіслати приватне повідомлення
Автор RE: int <--> string
cupidon4uk
Користувач

Повідомлень: 393
Звідки: LNU
Зареєстрований: 02.01.09
Опубліковано 28-02-2010 22:19
А не підкажете, як через прінтф і сканф замутити виведення до N-го знаку після коми?


GoogleHireMe 557679737 mylyanyk.ivan [Lviv_NU] Надіслати приватне повідомлення
Автор RE: int <--> string
webmaster
Головний Адміністратор

Аватар користувача

Повідомлень: 1136
Зареєстрований: 17.03.07
Опубліковано 28-02-2010 22:48
через сканф не знаю, як замутити виведення :)
printf("%.4lf", res);
де 4 - це 4 знаки після кому, і воно заокруглює правильно.

тільки може бути проблема, якщо res дуже мале менше нуля
double res = -1e-8;
printf("%.3lf", res);
brus07 brus07 (Lviv NU) http://acm.lviv.ua Надіслати приватне повідомлення
Перейти на форум:
Голосування
Що Ви б хотіли отримати в якості подарунку на змаганні з програмування?

Медалі

настільні ігри

торт

клавіатура, навушники, флешки і т.д.

квитки в кіно

квитки в аквапарк

квитки на пейнтбол

книги

футболки з логотипом змагання

Для участі в голосуваннях Ви повинні залогуватись.
Міні-чат +
Зараз на сайті -
Гостей: 2
На сайті немає зареєстрованних користувачів

Користувачів: 5,103
новачок: NataEvgten
Powered by PHP-Fusion © 2003-2006
LNU ACMania © 2004-2011 e-mail: webmaster@acm.lviv.ua
26,098,493 унікальних відвідувачів
Our projects: ACM Contester, _College.