Если у меня есть указатель на строку в середине которой содержится число. Я могу перевести в число примерно так:
wchar_t* begin = L"A12A";
begin++;
wchar_t* end;
unsigned long n = ::wcstoul(begin, &end, 10);
А как мне сделать подобное если число содержится в std::wstring и есть итератор на начало числа:
std::wstring wstr(L"A12B")
std::wstring::iterator it = wstr.begin();
it++;
//Получаем число
И на выходе итератор должен указывать на B;
Если у тебя есть только итератор под рукой и нет родительского (к итератору) объекта (строка), тогда можно вот так сделать
wchar_t* itAddress = &(*it);
unsigned long n = ::wcstoul(itAddress, L'\0', 10);
Т.е. через итератор получаем указатель на данные, которые хранятся в строке (итератор для строки по себе сам указатель по сути, его просто надо правильно преобразовать)
Если у тебя есть родительская строка, то можно сделать так:
unsigned long n = ::wcstoul(wstr.c_str() + 1, L'\0', 10);
Т.е. сразу легально (средствами строки) получаем указатель на данные, которые хранятся в строке
P.S.
Чуть скорректировал код чтобы определять где функция wcstoul закончила работу
wchar_t* itAddress = &(*it);
wchar_t* itAddressEnd = 0;
unsigned long n = ::wcstoul(itAddress + 1, &itAddressEnd, 10);
std::wstring::iterator itNew = it + ((long long)itAddressEnd - (long long)itAddress - 2);
-2 потому что 1) начали с символа it+1 - это дало -1, 2) закончили на предыдущем символе - это дало еще -1
В голову приходит только решение вроде такого
#include <iostream>
#include <string>
using namespace std;
int main()
{
wstring wstr(L"A1298BAAC");
wstring::iterator it = wstr.begin();
it++;
wchar_t* result_it;
auto x = wcstoul(&*it, &result_it, 10);
wstring::iterator it2 = wstr.begin();
while(it2 != wstr.end() && &*it2++ != result_it){
}
int pos = std::distance(wstr.begin(), it2) - 1;
std::wcout << x << endl << result_it << endl << pos << endl << wstr.substr(pos);
}
И вывод
1298
BAAC
5
BAAC
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости