Skip to main content
Engineering LibreTexts

5.3: String Data Type

  • Page ID
    29049
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Strings

    Technically, there is no string data type in the C++ programming language. However, the concept of a string data type makes it easy to handle strings of character data. A single character has some limitations. Many data items are not integers or floating-point values. The message Hi Mom! is a good example of a string. Thus, the need to handle a series of characters as a single piece of data (in English correctly called a datum).

    In the "C" programming language all string were handled as an array of characters that end in an ASCII null character (the value 0 or the first character in the ASCII character code set). Associated with object oriented programming the string class has been added to C++ as a standard part of the programming language. This changed with the implementation with strings being stored as a length controlled item with a maximum length of 255 characters. Included in the C++ string class is the reserved word of string as if it were a data type. Some basics about strings include:

    C++ Reserved Word String
    Represent Series of Characters (technically an array)
    Size Varies in length
    Normal Signage N/A
    Domain (Values Allowed) Extended ASCII Character Code Set
    C++ syntax rule Double quote marks for constants

    For now, we will address only the use of strings as constants. There are numerous methods to process strings with, and we will work with some of those as we prgress through the semester.

    std::string class in C++

    C++ has in its definition a way to represent sequence of characters as an object of class. This class is called std:: string. String class stores the characters as a sequence of bytes with a functionality of allowing access to single byte character.

    std:: string vs Character Array

    • A character array is simply an array of characters can terminated by a null character. A string is a class which defines objects that be represented as stream of characters.
    • Size of the character array has to allocated statically, more memory cannot be allocated at run time if required. Unused allocated memory is wasted in case of character array. In case of strings, memory is allocated dynamically. More memory can be allocated at run time on demand. As no memory is preallocated, no memory is wasted.
    • There is a threat of array decay in case of character array. As strings are represented as objects, no array decay occurs.
    • Implementation of character array is faster than std:: string. Strings are slower when compared to implementation than character array.
    • Character array do not offer much inbuilt functions to manipulate strings. String class defines a number of functionalities which allow manifold operations on strings.

    Operations on strings

    Input Functions

    • getline() :- This function is used to store a stream of characters as entered by the user in the object memory.
    • push_back() :- This function is used to input a character at the end of the string.
    • pop_back() :- Introduced from C++11(for strings), this function is used to delete the last character from the string.

    Capacity Functions

    • capacity() :- This function returns the capacity allocated to the string, which can be equal to or more than the size of the string. Additional space is allocated so that when the new characters are added to the string, the operations can be done efficiently.
    • resize() :- This function changes the size of string, the size can be increased or decreased.
    • length():-This function finds the length of the string
    • shrink_to_fit() :- This function decreases the capacity of the string and makes it equal to its size. This operation is useful to save additional memory if we are sure that no further addition of characters have to be made.

    Iterator Functions

    • begin() :- This function returns an iterator to beginning of the string.
    • end() :- This function returns an iterator to end of the string.
    • rbegin() :- This function returns a reverse iterator pointing at the end of string.
    •  rend() :- This function returns a reverse iterator pointing at beginning of string.

    Definitions

    string
    A series or array of characters as a single piece of data.

    Adapted from:
    "String Data Type" by Kenneth Leroy Busbee, (Download for free at http://cnx.org/contents/303800f3-07f...93e8948c5@22.2) is licensed under CC BY 4.0
    "std::string class in C++" by Manjeet SinghGeeks for Geeks is licensed under CC BY-SA 4.0


    This page titled 5.3: String Data Type is shared under a CC BY-SA license and was authored, remixed, and/or curated by Patrick McClanahan.