Форум программистов, компьютерный форум CyberForum.ru

выбрать из string числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
06.02.2012, 21:25     выбрать из string числа #1
Подскажите плс как из string равной допустим "123ghj42"
вытащить числа и засунуть их в int переменную?
что то вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
  {
  string str;
  cin>>str;
  int i=0;
  while(str[i]!='\0')
  {
      if((atoi(str[i].c_str())<=9)&&(atoi(str[i].c_str()))>=0)  //но это выдает ошибку
          int x+=str[i]; //а потом както так :D
  }
  system("pause");
  return 0;
  }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.02.2012, 21:36     выбрать из string числа #2
2e1553ce, так?
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
 
int main()
{
   std::string s("123ghj42");
   
   std::cout << std::stoi(s) << std::endl;
}
http://liveworkspace.org/code/b2c67e...eeae6720532acc
ШКІПЕР
 Аватар для ШКІПЕР
93 / 93 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
06.02.2012, 21:39     выбрать из string числа #3
C++
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
inline void operator<<(const string &s, int &i)
{
    istringstream ss(s);
    ss >> i;
}
 
int main()
{
  string str;
  string buf;
  getline(cin,str);
  for (int i=0; i<str.size();++i)
      if (str[i]>='0' && str[i]<='9')
          buf.push_back(str[i]);
 
  int a;
  buf<<a;
 
  cout<<a;
  
  system("pause");
  return EXIT_SUCCESS;
}
Добавлено через 49 секунд
Вариант "аля танцы с бубном".

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
бубен квадратный
Ну все-таки танцует

Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2012, 21:42     выбрать из string числа #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
 
int main()
{
    std::string s("142hello32"), tmp;
    std::istringstream iss(s);
    char c;
    
    while (iss >> c)
    {
        if (std::isdigit(c))
        {
            iss.putback(c);
            int a;
            iss >> a;
            std::cout << a << '\n';
        }
    }
}

Не по теме:

Цитата Сообщение от ШКІПЕР Посмотреть сообщение
Вариант "аля танцы с бубном".
бубен квадратный

x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.02.2012, 21:48     выбрать из string числа #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <cstring>
 
int main()
{
    std::string S = "2e1553ce";
    int X = 0;
    for ( int i = 0; i < S.size(); ++i )
    {
        if ( isdigit( S[ i ] ) )
            X = X * 10 + S[ i ] - 48;
        else if ( i && isdigit( S[ i - 1 ] ) )
        {
            std::cout << X << std::endl;
            X = 0;
        }
    }
    if ( isdigit( S.size() - 1 ) )
        std::cout << X << std::endl;
}
http://ideone.com/7eWRH
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
06.02.2012, 22:05  [ТС]     выбрать из string числа #6
Подскажите еще что делает c_str()?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2012, 22:06     выбрать из string числа #7
Цитата Сообщение от 2e1553ce Посмотреть сообщение
Подскажите еще что делает c_str()?
http://cplusplus.com/reference/string/string/c_str/
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
06.02.2012, 22:08     выбрать из string числа #8
Цитата Сообщение от 2e1553ce Посмотреть сообщение
Подскажите еще что делает c_str()?
Возвращает указатель const char* на строку в объекте типа string.
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.02.2012, 22:17     выбрать из string числа #9
*facepalm*
В моем коде 19 строка должна быть так:
C++
1
if ( isdigit( S[ S.size() - 1 ] ) )
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
06.02.2012, 22:26  [ТС]     выбрать из string числа #10
thanks
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.02.2012, 00:12     выбрать из string числа #11
Мы простых путей не ищем!
C
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
32
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
 
int main(void){
    char buf[BUFSIZ], * pHead, * pTail;
    long num;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        printf("Numbers:\n");
        for ( pHead = buf; *pHead; ){
            errno = 0;
            num = strtol(pHead, &pTail, 10);
            if ( ! errno ){
                printf("%ld\n", num);
            }
            else {
                if ( num == LONG_MIN || num == LONG_MAX ){
                    fprintf(stderr, "Number is too long!\n");
                    break;
                }
            }
            if ( ! *pTail )
                break;
            pHead = pTail + 1;
        }
        printf("\n");
    }
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 03:52     выбрать из string числа
Еще ссылки по теме:

C++ Выбрать отрицательные числа из диапазона и записать их в файл.
Задача с циклом For. Выбрать из последовательности числа не меньше заданного C++
Выбрать числа из массива А с заданным остатком от деления на M C++

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

Или воспользуйтесь поиском по форуму:
Том Ардер
Модератор
 Аватар для Том Ардер
3617 / 2236 / 271
Регистрация: 15.06.2009
Сообщений: 3,917
07.02.2012, 03:52     выбрать из string числа #12
C++
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
32
33
34
35
36
37
#include <iostream>
#include <strstream>
#include <iomanip>
using namespace std;
 
int main()
{
    istrstream  instr( "124abc35zxd" );
    strstream   outstr;
    char c;
 
        // копировать строку, заменяя нецифровые символы пробелами
    while( !instr.eof() )
    {
        instr >> c;
 
        if( isdigit(c) )
        {
            outstr << c;
        }
        else
        {
            outstr << ' ';
        }
    }
        // разобрать строку на числа, убирая пробелы
    int num;
 
    while( !outstr.eof() )
    {
        outstr >> num >> ws;
 
        cout << num << endl;
    }
 
    return 0;
}
Yandex
Объявления
07.02.2012, 03:52     выбрать из string числа
Ответ Создать тему
Опции темы

Текущее время: 13:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru