Я пытаюсь преобразовать входной текст / числа (строку), которые будут включать любые символы, но я хочу отделить числа от символов и сохранить их в массиве целых чисел, как только он будет преобразован из строки.
Я считаю, что проблема в том, что строка преобразуется в целое число с использованием stoi()
, но я не могу определить проблему.
В настоящее время код принимает любой ввод и превращает его в строку, затем строка проверяется символ за символом, и все числа без разделения через запятую или пробел добавляются вместе, один раз запятая или пробел, или любой другой символ отделяет число, число в целом добавляется в массив, а затем продолжает проверять строку на наличие дополнительных чисел.
Есть идеи?
Пример ввода1: 12, 13, 15
Пример ввода2: 12 13 15
Пример ввода3: 12ab13cd15ef
Результат в массиве целых чисел: 0 [12] 1 [13] 2 [15]
Эти числа будут использоваться в определенном порядке, используя числа в массиве.
#include<iostream>
#include<string>
#include <sstream>
using namespace std;
int main()
{
string datainput, str1, str3;
cin >> datainput;
int n = 0, raycount = 0, c;
int myray[10];
while (datainput[n])
{
if (datainput[n] == ('0') || datainput[n] == ('1') || datainput[n] == ('2') || datainput[n] == ('3') || datainput[n] == ('4') ||
datainput[n] == ('5') || datainput[n] == ('6') || datainput[n] == ('7') || datainput[n] == ('8') || datainput[n] == ('9'))
{
str1 = datainput[n];
str3 += str1;
}
else
{
c= stoi(str3);
c >> myray[raycount];
raycount++;
}
n++;
}
cout << myray[0] << endl;
cout << myray[1] << endl;
cout << myray[2] << endl;
cout << myray[3] << endl;
system("pause");
return 0;
}