我是 C++ 新手(来自 C# 背景),正在尝试学习如何将字符串转换为 int。
我通过使用 astringstream
并将其输出到 a中使其工作double
,如下所示:
const char* inputIndex = "5+2";
double number = 0;
stringstream ss(inputIndex);
ss >> number;
// number = 5
这很好用。我遇到的问题是我正在解析的字符串以数字开头,但在数字之后可能有其他非数字字符(例如“5+2”、“9-(3+2)”等) . 解析开头的stringstream
数字并在遇到非数字时停止,就像我需要的那样。
当我想知道有多少个字符用于解析数字时,问题就来了。例如,如果我 parse 25+2
,我想知道两个字符用于 parse 25
,以便我可以推进字符串指针。
到目前为止,我通过清除stringstream
、将解析后的数字输入回其中并读取结果字符串的长度来使其工作:
ss.str("");
ss << number;
inputIndex += ss.str().length();
虽然这确实有效,但对我来说似乎真的很糟糕(尽管这可能只是因为我来自 C# 之类的东西),而且我有一种感觉可能会导致内存泄漏,因为它str()
会创建字符串的副本。
有没有其他方法可以做到这一点,或者我应该坚持我所拥有的?
谢谢。