Javatpoint Logo
Javatpoint Logo

String::npos in C++

String::npos is a static member constant of the std::string class in C++. It stands for the largest std::string object that can be created. When utilizing string-related actions, such as locating substrings or characters, this value is frequently used to signify the lack of a valid position or an unsuccessful search within a string.

When a particular character or substring cannot be located, string::npos is generally used to signal an incorrect location within a string. When a search fails, it is frequently returned by different member methods of the std::string class. For instance, when the supplied substring cannot be found within the target string, the search function returns string::npos.

In C++, the predefined constant value std::string::npos represents the largest value that can be assigned to the data type. std::string::size_type. When applied to C++ strings, it serves as a placeholder for a position that cannot be located or is invalid. std::string::npos theoretical background is provided below:

  1. Compatibility of Data Type
    • As a type of constant, std::string::npos is defined. An unsigned integer type is std::string::size_type.
    • It can represent any legitimate location within a string because it is made to work with the size or position values that are used in strings.
  2. Position Invalid or Not Found
    • When conducting actions such as searching, finding, or extracting substrings within a string, std::string::npos is commonly utilized to indicate an invalid or not-found position.
    • A failed search is indicated by returning std::string::npos when a search or find operation is unable to discover the supplied substring or character.
  3. Keeping Undefined Behaviour at Bay
    • By providing a well-defined constant to denote failure, the use of std::string::npos aids in the prevention of undefined behavior.
    • Without such a constant, not-found conditions could be indicated by code using random values like -1 or other sentinel values, which could have unexpected outcomes.
  4. Comparing using Size()
    • You may tell if a position exceeds the permitted string size by using the std::string::npos function to compare places inside a string.
    • For instance, the position pos is considered incorrect if pos > str.size().
  5. Standardization
    • Since it is a component of the C++ Standard Library, std::string::npos is frequently used in C++ programs. It guarantees portability and consistency while working with strings on many systems and C++ environments.


Let's take an example to illustrate the string::npos in C++:


Substring 'cat' not found.


In the above example, we look for the word "cat" within the main string. If the substring is located, its location is printed. We printed a notice stating that the substring was not found, though, if it is not found. The program will function as predicted because of the use of std::string::npos in the if condition to handle the case where the substring cannot be located.

  1. The #include directive is used to include important header files, such as iostream> and string>, which offer features for input/output operations and string handling.
  2. The program's entrance point serves as its primary function.
  3. Standard::string: The string variable named mainString is initialized with the given content when it is assigned the value "The quick brown fox jumps over the lazy dog".
  4. Initializes a second string variable named subString with the value "cat" using the syntax std::string subString = "cat". It is the substring that we are going to look for in mainString.
  5. location = mainString for size_t.find(subString); uses the find function to find subString's location within mainString. The position variable is given the outcome.
  6. The if clause determines if the position's value is less than or equal to std::string::npos. It indicates that the substring has been located if it is not std::string::npos. In this instance, a message showing the substring's location within the main string is printed by the program.
  7. The else block is executed, and a message stating that the substring could not be located within the main string is printed by the program if the substring cannot be found.
  8. Returning 0; at the end means the program has run successfully and has ended.

Next TopicInsertion Sort

Youtube For Videos Join Our Youtube Channel: Join Now


Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Trending Technologies

B.Tech / MCA