Home > Backend Development > C++ > body text

How to Safely Convert Strings to Doubles in C and Handle Non-Numerical Strings?

Patricia Arquette
Release: 2024-10-26 07:28:30
Original
917 people have browsed it

How to Safely Convert Strings to Doubles in C   and Handle Non-Numerical Strings?

Converting Strings to Doubles in C with Special Handling for Non-Numerical Strings

In C , converting strings to doubles can be done seamlessly using built-in functions. However, it becomes crucial to distinguish between numerical and non-numerical strings. To address this challenge, we present a solution that returns 0 for non-numerical strings.

Function Implementation:

The core of our solution lies in the string_to_double function:

<code class="cpp">#include <sstream>

double string_to_double(const std::string& s) {
  std::istringstream i(s);
  double x;
  if (!(i >> x))
    return 0;
  return x;
}</code>
Copy after login

How It Works:

  1. We create an input string stream (std::istringstream) object i for safely reading the string.
  2. We attempt to extract a double from the stream. If successful, the double is assigned to x.
  3. If no double can be extracted (i >> x fails), we return 0, indicating a non-numerical string.

Testing the Function:

In the provided test cases, we demonstrate how the function interprets different numeric and non-numeric strings correctly:

<code class="cpp">int main() {
  assert(0.5 == string_to_double("0.5"));
  assert(0.5 == string_to_double("0.5 "));
  assert(0.5 == string_to_double(" 0.5"));
  assert(0.5 == string_to_double("0.5a"));

  // Non-numerical strings will return 0:
  assert(0 == string_to_double("foobar"));
}</code>
Copy after login

Limitations:

It's important to note that due to the specific requirements of returning 0 for non-numerical strings, distinguishing between numerical strings representing zero and truly non-numerical strings is not possible.

The above is the detailed content of How to Safely Convert Strings to Doubles in C and Handle Non-Numerical Strings?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!