私は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
解析に2文字が使用されたことを知りたいと思います。25
これまでのところ、をクリアしstringstream
、解析された数値を入力し直して、結果の文字列の長さを読み取ることで、機能するようになりました。
ss.str("");
ss << number;
inputIndex += ss.str().length();
str()
これは機能しますが、私には本当にハッキーなようです(ただし、C#のようなものから来ているためかもしれません) 。また、が文字列のコピーを作成するため、メモリリークが発生する可能性があると感じています。
これを行う他の方法はありますか、それとも私が持っているものに固執する必要がありますか?
ありがとう。