2012-04-09 6 views
1

この場合、一時的な文字列を使用しないようにする方法がある場合、私は思ったんだけど:.c_strコマンドで一時文字列を使用しないでください。

tempString = inputString.substr(commaLast,commaCurrent-1); 
yPos = strtod(tempString.c_str(), NULL); 

ありSUBSTRコマンドを使用する方法はありませんし、最初の一時文字列内の部分文字列を格納することなく、c_strを返します(私は元の文字列を変更したくないと仮定します)。

+0

inputStringで何かしていますか?最初の場所でstrtodとc_strを使用しているということは、代わりにstd :: stringstreamを使用してより良い解決策を得るかもしれないことを示唆しています。 –

+0

はい、いくつかの条件に基づいて文字列を分割しています。私はSVGの行を解析しようとしています。私はstd :: stringsteamを見てきましたが、これは空白の分割にのみ有効だと思いました – jimspree1200

+0

>>演算子はデフォルトで空白で区切られていますが、 stringstreamはstd :: cinからの入力と同じように文字列データを扱うことができるので、読み込みの前後で 'istream :: ignore(/ * ... * /)'を使って次の文字をスキップすることができますあなたが選んだ区切り文字を含む。 (SVG形式についてはあまりよく分かりませんので、あなたにとって有益かもしれませんが、単純な区切りのデータでは問題ありません) –

答えて

0

あなたは次のことを試しましたか?

yPos = strtod(inputString.substr(commaLast,commaCurrent-1).c_str(), NULL); 
+0

Arg!私は私がしたことを誓ったことができました!私は試していたと思います: yPos = strtod(inputString.c_str()。substr(commaLast、commaCurrent-1)、NULL); – jimspree1200

関連する問題