可能性のある複製:
C++で文字列をintに解析する方法
C++文字列をintにどのように変換しますか?
文字列には実際の数字(たとえば、「1」、「345」、「38944」)が含まれていると想定しています。
また、ブーストを持たず、本当に古いCの方法ではなく、C++の方法でそれを実行したいとします。
#include <sstream>
// st is input string
int result;
stringstream(st) >> result;
C++ストリームを使用します。
std::string plop("123");
std::stringstream str(plop);
int x;
str >> x;
/* Lets not forget to error checking */
if (!str)
{
// The conversion failed.
// Need to do something here.
// Maybe throw an exception
}
PS。この基本原則は、ブーストライブラリlexical_cast<>
動作します。
私のお気に入りの方法は、ブーストlexical_cast<>
#include <boost/lexical_cast.hpp>
int x = boost::lexical_cast<int>("123");
これは、文字列と数値の形式を変換して戻す方法を提供します。その下では文字列ストリームを使用するため、ストリームにマーシャリングしてからストリームからアンマーシャリングできるものはすべて(>>および<<演算子を見てください)。
C++ FAQ Lite
[39.2] std :: stringを数値に変換するにはどうすればよいですか?
https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num
以前、C++コードで次のようなものを使用しました。
#include <sstream>
int main()
{
char* str = "1234";
std::stringstream s_str( str );
int i;
s_str >> i;
}
Boost :: lexical_castへの投票を追加させてください
#include <boost/lexical_cast.hpp>
int val = boost::lexical_cast<int>(strval) ;
エラー時にbad_lexical_cast
をスローします。
おそらくあなたがnotを使用することを望んでいるのはなぜですか?atoi?車輪を再発明しても意味がありません。
ここでポイントを逃していますか?
atoi を使用します