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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
#1

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

06.02.2012, 21:25. Просмотров 2163. Ответов 11
Метки нет (Все метки)

Подскажите плс как из 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;
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 21:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос выбрать из string числа (C++):

Господа, нужно выбрать double-архив из строки string(С++/С) - C++
Есть строка формата: string str=&quot;R 7.2 531.804 119.479 0.477472 175.792 7.22212 -64.2461 0 79.5401 -0.600769 ...

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

Перевод числа из int в string - C++
Программа вычисляет сумму нечетных чисел в массиве. Далее хотел определить, является число состоящим из одинаковых цифр. Начал переводить...

запись числа в экспоненциальной форме в string - C++
В шапке вопрос написан. Найти пока не смог, хоть и читал описание. std::string - вообще пока глухо; CString - там вроде через Format,...

Из текста выбрать числа и записать в массив - C++
Из текста выбрать числа и записать в массив. Предполагается, что количество встречающихся чисел не более 10.

Как выбрать первую цифру из числа? - C++
нужно ввести любое число и выбрать из него первую цифру. помогите пожалуйста. среда программирования dev-c++.

11
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.02.2012, 21:36 #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/b2c67ea1831f4d1b24eeae6720532acc
2
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
06.02.2012, 21:39 #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 Посмотреть сообщение
бубен квадратный
Ну все-таки танцует

2
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2012, 21:42 #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';
        }
    }
}

Не по теме:

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

2
x1Mike7x
218 / 131 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.02.2012, 21:48 #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
2
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
06.02.2012, 22:05  [ТС] #6
Подскажите еще что делает c_str()?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2012, 22:06 #7
Цитата Сообщение от 2e1553ce Посмотреть сообщение
Подскажите еще что делает c_str()?
http://cplusplus.com/reference/string/string/c_str/
1
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
06.02.2012, 22:08 #8
Цитата Сообщение от 2e1553ce Посмотреть сообщение
Подскажите еще что делает c_str()?
Возвращает указатель const char* на строку в объекте типа string.
0
x1Mike7x
218 / 131 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.02.2012, 22:17 #9
*facepalm*
В моем коде 19 строка должна быть так:
C++
1
if ( isdigit( S[ S.size() - 1 ] ) )
0
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
06.02.2012, 22:26  [ТС] #10
thanks
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
07.02.2012, 00:12 #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;
}
0
Том Ардер
Модератор
Эксперт по математике/физике
3777 / 2389 / 304
Регистрация: 15.06.2009
Сообщений: 4,314
07.02.2012, 03:52 #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;
}
0
07.02.2012, 03:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 03:52
Привет! Вот еще темы с ответами:

Выбрать отрицательные числа из диапазона и записать их в файл. - C++
Помогите доделать) написать программу которая считывает текст из файла и записывает в другой файл встречающиеся в тексте отрицательные...

Выбрать числа из массива А с заданным остатком от деления на M - C++
Даны целые числа A1,A2,....Аn. Указать те из них, у которых остаток от деления на М равен L (0&lt;L&lt;M - 1). Задание - Сформировать...

Из текста выбрать все числа и записать их в массив N - C++
а) Дан текст. Из текста выбрать все числа и записать их в массив N. Массив вывести на экран. Текст произвольный

Вывести на экран только предложения, содержащие двузначные числа (строки: string) - C++
Помогите разобраться со строками, второй вечер не могу найти ошибку. Задание такое: Вывести на экран только предложения, содержащие...


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

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

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