web-dev-qa-db-ja.com

C ++文字列をintにどのように変換しますか?

可能性のある複製:
C++で文字列をintに解析する方法

C++文字列をintにどのように変換しますか?

文字列には実際の数字(たとえば、「1」、「345」、「38944」)が含まれていると想定しています。

また、ブーストを持たず、本当に古いCの方法ではなく、C++の方法でそれを実行したいとします。

46
krupan
#include <sstream>

// st is input string
int result;
stringstream(st) >> result;
74

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");

これは、文字列と数値の形式を変換して戻す方法を提供します。その下では文字列ストリームを使用するため、ストリームにマーシャリングしてからストリームからアンマーシャリングできるものはすべて(>>および<<演算子を見てください)。

33
Martin York

C++ FAQ Lite

[39.2] std :: stringを数値に変換するにはどうすればよいですか?

https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num

4

以前、C++コードで次のようなものを使用しました。

#include <sstream>
int main()
{
    char* str = "1234";
    std::stringstream s_str( str );
    int i;
    s_str >> i;
}
4
ayaz

Boost :: lexical_castへの投票を追加させてください

#include <boost/lexical_cast.hpp>

int val = boost::lexical_cast<int>(strval) ;

エラー時にbad_lexical_castをスローします。

2
Ryan Ginstrom

おそらくあなたがnotを使用することを望んでいるのはなぜですか?atoi?車輪を再発明しても意味がありません。

ここでポイントを逃していますか?

0
user12576

atoi を使用します

0
Ramesh Soni