C で文字列を整数に安全に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-05 14:23:02
オリジナル
971 人が閲覧しました

How to Safely Convert a String to an Integer in C  ?

C で Bool/Fail を使用して文字列を Int に変換する

概要:

C では、文字列を文字列に変換しますinteger は簡単なタスクですが、場合によっては変換エラーが発生する可能性があります。このようなシナリオでは、これらの例外や失敗を適切に処理する必要があります。

Boost::lexical_cast:

Boost は、boost を含む多数のユーティリティを備えた多用途ライブラリを提供します。 :lexical_cast.この関数を使用すると、文字列をさまざまなデータ型に変換でき、失敗した場合には例外がスローされます。例:

<code class="cpp">#include <boost/lexical_cast.hpp>
int i = boost::lexical_cast<int>(s);</code>
ログイン後にコピー

ブーストなし:

ブーストが利用できない場合は、C ストリームベースのアプローチを利用できます:

<code class="cpp">#include <sstream>
int i;
std::stringstream ss(s);
if ((ss >> i).fail() || !(ss >> std::ws).eof()) {
  throw std::bad_cast();
}</code>
ログイン後にコピー

偽のブースト:

ブーストがない場合、その機能を模倣するカスタム関数を作成することが可能です:

<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">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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!