Имею текстовый файл с неким содержимым.
В строке выделил отдельный кусок
RUBIN1|X 100.000 m |Y 100.000 m |Z 100.000 m |
Из нее мне нужно вытянуть 3 числа (X,Y,Z). Они могут быть любыми. Для этого написал такой код
auto getCoords(string text,int pos) {
string str;
char i = text[pos];
while (i != '\n'){
str.push_back(i);
i = text[++pos];
}
regex words_regex("[+-]?\\d+\\.?\\d*");
auto words_begin = sregex_iterator(str.begin(), str.end(), words_regex);
auto words_end = sregex_iterator();
size_t size = distance(words_begin, words_end);
double* arr = new double[size];
double* it2 = arr;
for (sregex_iterator it = words_begin; it != words_end; ++it) {
*it2 = stod(it->str());
++it2;
}
return arr;
delete[] arr;
где text- строка с текстом из файла, pos - позиция | после слова RUBIN1
Для вывода содержимого на экран использую:
for (auto i = 0; i < sizeof(arr); ++i)
cout << arr[i] << " ";
Однако в консоли получаю:
100 100 100 1.10195е-309
Не могу понять, откуда берётся четвёртое число
sizeof(arr)
в вашем случае - вообще-то просто размер указателя на double
...
У вас столько разных классов C++ - и regex
, и итераторы... что вам стоит сделать
vector<double> arr;
...
for (sregex_iterator it = words_begin; it != words_end; ++it) {
arr.push_back(stod(it->str()));
}
...
for (auto i = 0; i < arr.size(); ++i)
cout << arr[i] << " ";
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Даны натуральные числа a, b, cЕсли уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет наименьшее неотрицательное...
Есть таблица d__RenderedServiceBody, в которой имеются внешние ключи к таблицам Продукты и Услуги