С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
#1

Конвертация из int в string и наоборот - C++

10.07.2011, 10:46. Просмотров 2491. Ответов 13
Метки нет (Все метки)

Вопрос такой: Как переменной типа string записать значение типа int и наоборот. Помогите плиз никак не разбирусь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2011, 10:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конвертация из int в string и наоборот (C++):

Рекурсивная конвертация чисел int в string и наоборот (ошибка) - C++
Доброго времени суток! Есть 2 метода которые предназначены для конвертации чисел из int в string и наоборот. Когда тестил - все вроде...

Конвертация переменной типа string в массив int - C++
Добрый день. Есть строка string выглядит следующим образом: string str = "01 07 45 0F 12 00 02 09 10 BA 00 34 33 30 35 32 31 31 33"; ...

Как превести из char* в int и наоборот из int в char*? - C++
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Конвертация int в char - C++
Как конвертировать int в char

Конвертация из int в char - C++
есть длина строки которая int или даже 8 байтный long, но если в ней число < 255 то мне нужно её положить в 1 байт (char), но тут...

Конвертация из heximal в int - C++
Нужно написать функцию для конвертации строки, представленной как heximal, в int. Например: Вход: char * pStr = "0xFF"; Выход: ...

13
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
10.07.2011, 11:03 #2
itoa?

Добавлено через 3 минуты
или http://www.cplusplus.com/reference/iostream/istringstream/
1
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
10.07.2011, 11:06 #3
fenix117,

С использованием stringstream, так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::istringstream in(std::string("100"));
    std::ostringstream out;
    int num = 100;
   
    in >> num;
        std::cout << num << std::endl;
 
    num = 1000;
    out << num;
    std::cout << out.str() << std::endl;
 
    return 0;
}
1
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
10.07.2011, 12:33  [ТС] #4
с itoa копался, так и не заработало,
nameless, напиши плиз подробнее я не пойму даж где у тебя переменная типа string
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
10.07.2011, 12:38 #5
fenix117,

Цитата Сообщение от fenix117 Посмотреть сообщение
я не пойму даж где у тебя переменная типа string
C++
1
2
std::string str("100");
std::istringstream in(str);
Надеюсь так понятнее.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
10.07.2011, 12:48 #6
boost::lexical_cast
1
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
10.07.2011, 12:49 #7
чё там копаться то, переводишь сначала с помощью c_str в char* и итоашишь. Но это не с++ way, правильно будет как nameless показал
2
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
10.07.2011, 12:49 #8
Цитата Сообщение от fenix117 Посмотреть сообщение
с itoa копался, так и не заработало,
Что могло интересно не заработать?

C
1
2
char buffer[32];
printf("%s", itoa(100, buffer, 10));
1
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
10.07.2011, 12:54 #9
Цитата Сообщение от pito211 Посмотреть сообщение
чё там копаться то, переводишь сначала с помощью c_str в char* и итоашишь. Но это не с++ way
Это даже не C-way, так как itoa, как известно, в стандартной библиотеке нет.
1
Onishare
30 / 30 / 5
Регистрация: 07.05.2011
Сообщений: 50
10.07.2011, 13:16 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string Int2String(int value) {
  string res;
  bool continue = true;
  do {
    switch(value % 10) {
      case 0: res = "0" + res; break;
      case 1: res = "1" + res; break;
      case 2: res = "2" + res; break;
      case 3: res = "3" + res; break;
      case 4: res = "4" + res; break;
      case 5: res = "5" + res; break;
      case 6: res = "6" + res; break;
      case 7: res = "7" + res; break;
      case 8: res = "8" + res; break;
      case 9: res = "9" + res; break;
      default: continue = false;
    }
    value /=  10;
  } while (continue && value);
  return res;
}
1
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
10.07.2011, 13:28  [ТС] #11
Я еще многого не знаю, для меня самый понятный вариант как у
Onishare, switch-ем сделаю, т.к. у меня переменная может равняться только 1,2,3,4 или 5.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.07.2011, 14:03 #12
C
1
2
char buff[100];
sprintf( buff, "%d", 123 );
0
ValeryLaptev
Эксперт С++
1046 / 825 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
10.07.2011, 16:22 #13
Цитата Сообщение от Onishare Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string Int2String(int value) {
  string res;
  bool continue = true;
  do {
    switch(value % 10) {
      case 0: res = "0" + res; break;
      case 1: res = "1" + res; break;
      case 2: res = "2" + res; break;
      case 3: res = "3" + res; break;
      case 4: res = "4" + res; break;
      case 5: res = "5" + res; break;
      case 6: res = "6" + res; break;
      case 7: res = "7" + res; break;
      case 8: res = "8" + res; break;
      case 9: res = "9" + res; break;
      default: continue = false;
    }
    value /=  10;
  } while (continue && value);
  return res;
}
Надо писать короче:
C++
1
2
3
4
5
6
7
8
9
10
11
string Int2String(int value)
{
  string res;
  char ch = 0;
  char digit[] = "0123456789";
  do { ch = value % 10;
       res = digit[ch] + res;
    value /=  10;
  } while (value);
  return res;
}
0
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,431
Завершенные тесты: 1
10.07.2011, 23:11 #14
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
bool continue = true;
continue - зарезервированное слово, что в С++ теперь можно использовать под имена переменных зарезервированные слова?
0
10.07.2011, 23:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2011, 23:11
Привет! Вот еще темы с ответами:

Конвертация int в char* - C++
Доброго времени суток!!! Пытаюсь конвертировать int в char* стандартными средствами c++. Приложение компилируется, но вовремя выполнения...

Конвертация qint64 в int и обратно - C++
Здравствуйте, делаю программу и возникла необходимость конвертации qint64 в int и обратно. Как можно это делать? гугление не помогло

Конвертация строкового типа в int - C++
Как из вот этого textBox1-&gt;TextChanged сделать переменную типа int ? я пытался так но не получилось int x; x = textBox1-&gt;TextChanged;...

Конвертация int в char и обратно - C++
Помогите, я запутался... Есть 2 переменных: int a; char b; Допустим a = 0. Нужно преобразовать ее в символ, чтобы b = '0'. ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.