次のコードは を に変換しますstd::string
。int
問題は、真の整数または単なるランダムな文字列と区別できないという事実にあります。このような問題に対処するための体系的な方法はありますか?
#include <cstring>
#include <iostream>
#include <sstream>
int main()
{
std::string str = "H";
int int_value;
std::istringstream ss(str);
ss >> int_value;
std::cout<<int_value<<std::endl;
return 0;
}
編集:これは非常に最小限でエレガントなので、私が気に入ったソリューションです! 負の数では機能しませんが、とにかく正の数だけが必要でした。
#include <cstring>
#include <iostream>
#include <sstream>
int main()
{
std::string str = "2147483647";
int int_value;
std::istringstream ss(str);
if (ss >> int_value)
std::cout << "Hooray!" << std::endl;
std::cout<<int_value<<std::endl;
str = "-2147483648";
std::istringstream negative_ss(str);
if (ss >> int_value)
std::cout << "Hooray!" << std::endl;
std::cout<<int_value<<std::endl;
return 0;
}