R. Martinho Fernandes の回答の上に構築するには、コードに代わる可能な C++ の代替案を次に示します。
std::string num;
std::getline(std::cin, num);
// Arbitrary logic, e.g.: remove non digit characters from num
num.erase(std::remove_if(num.begin(), num.end(),
std::not1(std::ptr_fun((int(*)(int))std::isdigit))), num.end());
std::stringstream ss(num);
ss >> n;
- この
std::getline
関数は から文字を抽出しcin
、 に格納しnum
ます。また、入力の末尾にある区切り文字を抽出して破棄します (独自の区切り文字を指定すること\n
も、使用することもできます)。
- この関数は、負の述語を使用して
string::erase
、文字列から数字以外のすべての文字を削除します。num
std::remove_if
std::isdigit
- 次に、文字列は a を使用して整数として表されます
std::stringstream
(aboost::lexical_cast
も同様に機能します)。
ここで消去関数によって実装されるロジックは他のロジックでもかまいませんが、このコードはおそらく質問に含まれているものよりもはるかに読みやすいです。