
- 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::operator!() function
The C++ std:ios::operator!() function is a user defined operator that allows objects of a class to be used with the logical NOT operator(!). By implementing this operator, we can customize how the NOT operator works for the instances of that class.
For example, if an object represents a success status, operator!() might return true when the status is a failure.
Syntax
Following is the syntax for std::ios::operator!() function.
bool operator!() const;
Parameters
It does not accept any parameter.
Return Value
It retuns true if either failbit or badbit is set or else 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
Let's look at the following example, where we are going to overload the operator!() function to return the negation of the boolean value.
#include <iostream> class a { public: a(bool value) : b(value) {} bool operator!() const { return !b; } private: bool b; }; int main() { a x1(true); a x2(false); std::cout << "Result Of Object1 : " << !x1 << std::endl; std::cout << "Result Of Object2 : " << !x2 << std::endl; return 0; }
Output
Output of the above code is as follows −
Result Of Object1 : 0 Result Of Object2 : 1
Example
Consider the following example, where we are going to check whether the object is empty or not.
#include <iostream> #include <string> class a { public: a(const std::string& c) : b(c) {} bool operator!() const { return b.empty(); } private: std::string b; }; int main() { a x1(""); a x2("TutorialsPoint"); std::cout << "Result : " << !x1 << std::endl; std::cout << "Result : " << !x2 << std::endl; return 0; }
Output
Following is the output of the above code −
Result : 1 Result : 0