#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
void get_numbers(vector<int> & result, const string & s) {
bool found = false;
int number = 0;
for (string::size_type i = 0; i < s.length(); i++) {
const char ch = s[i];
if (ch >= '0' && ch <= '9') {
const int digit = ch - '0';
number = number*10 + digit;
found = true;
}
else {
if (found) {
result.push_back(number);
number = 0;
found = false;
}
}
}
if (found) {
result.push_back(number);
}
}
int main() {
vector<int> numbers;
get_numbers(numbers, "54dgdf5 6hgf1 0hgjgh96 ryre57yt6t");
copy(numbers.begin(), numbers.end(), ostream_iterator<int>(cout, "\n"));
}
Как выделить числа из строки ?
Как выделять из строки , содержащей пробелы и другие символы , числа и записывать их поочерёдно в массив ?
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char *str="54dgdf5 6hgf1 0hgjgh96 ryre57yt6t";
int mas[50];
int n=0;
for (int i=0; str[i]!='\0'; i++)
{
if ((str[i]>='0')&&(str[i]<='9'))
{
mas[n]=str[i]-'0';
n++;
};
};
printf("mas:");
for (int i=0;i<n;i++)
{
printf(" %d",mas[i]);
};
cout<<'\n';
system("pause");
return 0;
}
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char *str="54dgdf5 6hgf1 0hgjgh96 ryre57yt6t";
int mas[50];
int n=0;
for (int i=0; str[i]!='\0'; i++)
{
if ((str[i]>='0')&&(str[i]<='9'))
{
mas[n]=str[i]-'0';
n++;
};
};
printf("mas:");
for (int i=0;i<n;i++)
{
printf(" %d",mas[i]);
};
cout<<'\n';
system("pause");
return 0;
}
Мне нужны числа , а не все подряд цифры . Например : "99+56-987*5" требуемый массив (99,56,987,5) .
как только появилась нецифра преобразуем строку в число функцией atoi(*str) и полученный результат записываем в int-переменную
atoi
Массив совпадений и будет результирующим массивом.