C のエラー処理を使用して文字列を int に変換する
文字列を整数に変換することは、プログラミングにおける一般的なタスクです。ただし、文字列値を整数に正常に変換できない場合があります。このようなシナリオでは、変換の失敗を適切に処理することが重要です。
boost::lexical_cast
エラーを伴う文字列を int に変換する最も簡単な方法の 1 つ処理には boost::lexical_cast 関数を使用します。この関数は、変換を続行できない場合に例外をスローするため、それをキャッチして適切に応答できます。
<code class="cpp">#include <boost/lexical_cast.hpp> int main() { std::string s; std::cin >> s; try { int i = boost::lexical_cast<int>(s); } catch (...) { // Handle the conversion failure } }</code>
標準ライブラリ関数の使用
を使用しない代替アプローチboost は、std::stringstream や std::bad_cast などの標準ライブラリ関数を利用することです。
<code class="cpp">#include <iostream> #include <sstream> int main() { std::string s; std::cin >> s; std::stringstream ss(s); int i; if ((ss >> i).fail() || !(ss >> std::ws).eof()) { throw std::bad_cast(); } }</code>
カスタム関数
カスタマイズ可能にするために、 boost::lexical_cast の機能をエミュレートし、変換の失敗を管理する関数。
<code class="cpp">template <typename T> T lexical_cast(const std::string& s) { std::stringstream ss(s); T result; if ((ss >> result).fail() || !(ss >> std::ws).eof()) { throw std::bad_cast(); } return result; }</code>
非スロー バージョン
例外のスローを避けたい場合は、例外をキャッチし、失敗インジケータを返すことで、上記の関数のスローなしバージョンを作成できます。
<code class="cpp">template <typename T> bool lexical_cast(const std::string& s, T& t) { try { t = lexical_cast<T>(s); return true; } catch (const std::bad_cast& e) { return false; } }</code>
これらのメソッドを使用すると、潜在的な変換失敗を処理しながら、文字列を整数に効率的に変換できます。
以上がC で文字列を整数に変換するときに変換エラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。