Я новичок в C ++ (из C # фона) и пытаюсь узнать, как преобразовать строку в int.
Я получил его с помощью stringstream
и вывел его в double
, вот так:
const char* inputIndex = "5+2";
double number = 0;
stringstream ss(inputIndex);
ss >> number;
// number = 5
Это прекрасно работает. Проблема, с которой я сталкиваюсь, состоит в том, что анализируемые строки начинаются с числа, но могут иметь другие, не цифры, цифры после цифр (например, "5 + 2", "9- (3+) 2) "и т. Д.). stringstream
анализирует цифры в начале и останавливается, когда встречается с нецифровой цифрой, как мне и нужно.
Проблема возникает, когда я хочу узнать, сколько символов было использовано для анализа числа. Например, если я разбираю 25+2
, я хочу знать, что для разбора 25
были использованы два символа, чтобы я мог перемещать указатель строки.
До сих пор я работал, очистив stringstream
, введя проанализированный номер обратно в него и прочитав длину полученной строки:
ss.str("");
ss << number;
inputIndex += ss.str().length();
Хотя это работает, мне это кажется очень хакерским (хотя это может быть просто из-за того, что я использую что-то вроде C #), и у меня есть ощущение, что это может вызвать утечку памяти, потому что str()
создает копию строки.
Есть ли другой способ сделать это, или я должен придерживаться того, что у меня есть?
Спасибо.