
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ IOS::good() function
The C++ std::ios::good() function is a member of the std::ios class, which is the part of input/output stream library. This function checks the state of an I/O stream to determine if it is in a good state(no errors occurred) or not. It returns true if it is in good state otherwise it returns false.
Syntax
Following is the syntax for std::ios::good() function.
bool good() const;
Parameters
It does not accept any parameter.
Return value
It returns true if the condition holds, otherwise false.
Exceptions
If an exception is thrown, there are no changes in the stream.
Data Races
Accesses the stream object.
Concurrent access to the same stream object may cause data races.
Example
In the following example, we are going to check standard input stream.
#include <iostream> int main() { std::cout << "Enter A Number : "; int x; std::cin >> x; if (std::cin.good()) { std::cout << "Entered Number Is : " << x << "\n"; } else { std::cout << "Input Not Found.\n"; } return 0; }
Output
Output of the above code is as follows −
Enter A Number : 123 Entered Number Is : 123
Example
Consider the following example, where we are going to ask user to enter two integers. if both the inputs are successful, good() return true.
#include <iostream> int main() { std::cout << "Enter two integers: "; int x, y; std::cin >> x >> y; if (std::cin.good()) { std::cout << "Sum: " << x + y << std::endl; } else { std::cout << "Error." << std::endl; } return 0; }
Output
Following is the output of the above code −
Enter two integers: 1 2 Sum: 3
Example
Let's look at the following example, where we are going to read multiple types of input in a single statement.
#include <iostream> int main() { std::cout << "Input : "; int x; std::string y; std::cin >> x >> y; if (std::cin.good()) { std::cout << "Number: " << x << ", String: " << y << std::endl; } else { std::cout << "Input error." << std::endl; } return 0; }
Output
If we run the above code it will generate the following output −
Input : 1TP Number: 1, String: TP