Partilhar via


<string> operadores

O <string> cabeçalho fornece os seguintes operadores:

operador+

Concatena dois objetos de cadeia de caracteres.

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator> operator+(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator> operator+(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator> operator+(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator> operator+(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator> operator+(
    const CharType left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>&& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const basic_string<CharType, Traits, Allocator>&& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const basic_string<CharType, Traits, Allocator>&& left,
    const basic_string<CharType, Traits, Allocator>&& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const basic_string<CharType, Traits, Allocator>&& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const basic_string<CharType, Traits, Allocator>&& left,
    CharType right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>&& right);

template <class CharType, class Traits, class Allocator>
basic_string<CharType, Traits, Allocator>&& operator+(
    CharType left,
    const basic_string<CharType, Traits, Allocator>&& right);

Parâmetros

esquerda
Uma cadeia de caracteres no estilo C ou um objeto do tipo basic_string a ser concatenado.

direito
Uma cadeia de caracteres no estilo C ou um objeto do tipo basic_string a ser concatenado.

Valor de retorno

A cadeia de caracteres que é a concatenação das cadeias de caracteres de entrada.

Observações

As funções cada sobrecarga operator+ para concatenar dois objetos de modelo de classe basic_string. Todos efetivamente retornam basic_string< CharType, Traits, Allocator>(Left).append(right). Para obter mais informações, consulte anexar.

Exemplo

// string_op_con.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   // Declaring an object of type basic_string<char>
   string s1 ( "anti" );
   string s2 ( "gravity" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "heroine";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // Declaring a character constant
   char c1 = '!';
   cout << "The character constant c1 = " << c1 << "." << endl;

   // First member function: concatenates an  object
   // of type basic_string with an object of type basic_string
   string s12 = s1 + s2;
   cout << "The string concatenating s1 & s2 is: " << s12 << endl;

   // Second & fourth member functions: concatenate an object
   // of type basic_string with an object of C-syle string type
   string s1s3 = s1 + s3;
   cout << "The string concatenating s1 & s3 is: " << s1s3 << endl;

   // Third & fifth member functions: concatenate an object
   // of type basic_string with a character constant
   string s1s3c1 = s1s3 + c1;
   cout << "The string concatenating s1 & s3 is: " << s1s3c1 << endl;
}
The basic_string s1 = anti.
The basic_string s2 = gravity.
The C-style string s3 = heroine.
The character constant c1 = !.
The string concatenating s1 & s2 is: antigravity
The string concatenating s1 & s3 is: antiheroine
The string concatenating s1 & s3 is: antiheroine!

operador!=

Testa se o objeto string no lado esquerdo do operador não é igual ao objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator!=(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator!=(
    const basic_string<CharType, Traits, Allocator>& left,
const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator!=(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador não for lexicograficamente igual ao objeto string no lado direito; caso contrário false.

Observações

A comparação entre objetos de cadeia de caracteres é baseada em uma comparação lexicográfica de pares de seus caracteres. Duas cadeias de caracteres são iguais se tiverem o mesmo número de caracteres e seus respetivos valores de caracteres forem os mesmos. Caso contrário, são desiguais.

Exemplo

// string_op_ne.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "pluck" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "pluck";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 != s2 )
      cout << "The strings s1 & s2 are not equal." << endl;
   else
      cout << "The strings s1 & s2 are equal." << endl;

   // Second member function: comparison between left-side object
   // of type basic_string & right-side object of C-syle string type
   if ( s1 != s3 )
      cout << "The strings s1 & s3 are not equal." << endl;
   else
      cout << "The strings s1 & s3 are equal." << endl;

   // Third member function: comparison between left-side object
   // of C-syle string type & right-side object of type basic_string
   if ( s3 != s2 )
      cout << "The strings s3 & s2 are not equal." << endl;
   else
      cout << "The strings s3 & s2 are equal." << endl;
}
The basic_string s1 = pluck.
The basic_string s2 = strum.
The C-style string s3 = pluck.
The strings s1 & s2 are not equal.
The strings s1 & s3 are equal.
The strings s3 & s2 are not equal.

Operador==

Testa se o objeto string no lado esquerdo do operador é igual ao objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator==(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator==(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator==(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador é lexicograficamente igual ao objeto string no lado direito; caso contrário false.

Observações

A comparação entre objetos de cadeia de caracteres é baseada em uma comparação lexicográfica de pares de seus caracteres. Duas cadeias de caracteres são iguais se tiverem o mesmo número de caracteres e seus respetivos valores de caracteres forem os mesmos. Caso contrário, são desiguais.

Exemplo

// string_op_eq.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "pluck" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "pluck";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 == s2 )
      cout << "The strings s1 & s2 are equal." << endl;
   else
      cout << "The strings s1 & s2 are not equal." << endl;

   // Second member function: comparison between left-side object
   // of type basic_string & right-side object of C-syle string type
   if ( s1 == s3 )
      cout << "The strings s1 & s3 are equal." << endl;
   else
      cout << "The strings s1 & s3 are not equal." << endl;

   // Third member function: comparison between left-side object
   // of C-syle string type & right-side object of type basic_string
   if ( s3 == s2 )
      cout << "The strings s3 & s2 are equal." << endl;
   else
      cout << "The strings s3 & s2 are not equal." << endl;
}
The basic_string s1 = pluck.
The basic_string s2 = strum.
The C-style string s3 = pluck.
The strings s1 & s2 are not equal.
The strings s1 & s3 are equal.
The strings s3 & s2 are not equal.

operator<

Testa se o objeto string no lado esquerdo do operador é menor do que o objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator<(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator<(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator<(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador for lexicograficamente menor do que o objeto string no lado direito; caso contrário false.

Observações

Uma comparação lexicográfica entre cordas compara-as caractere por caractere até:

  • Ele encontra dois caracteres correspondentes desiguais, e o resultado de sua comparação é tomado como o resultado da comparação entre as cadeias de caracteres.

  • Ele não encontra desigualdades, mas uma string tem mais caracteres do que a outra, e a string mais curta é considerada menor do que a string mais longa.

  • Ele não encontra desigualdades e descobre que as cadeias de caracteres têm o mesmo número de caracteres, e assim as cadeias de caracteres são iguais.

Exemplo

// string_op_lt.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   // Declaring an objects of type basic_string<char>
   string s1 ( "strict" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "strict";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 < s2 )
      cout << "The string s1 is less than the string s2." << endl;
   else
      cout << "The string s1 is not less than the string s2." << endl;

   // Second member function: comparison between left-hand object
   // of type basic_string & right-hand object of C-syle string type
   if ( s1 < s3 )
      cout << "The string s1 is less than the string s3." << endl;
   else
      cout << "The string s1 is not less than the string s3." << endl;

   // Third member function: comparison between left-hand object
   // of C-syle string type & right-hand object of type basic_string
   if ( s3 < s2 )
      cout << "The string s3 is less than the string s2." << endl;
   else
      cout << "The string s3 is not less than the string s2." << endl;
}
The basic_string s1 = strict.
The basic_string s2 = strum.
The C-style string s3 = strict.
The string s1 is less than the string s2.
The string s1 is not less than the string s3.
The string s3 is less than the string s2.

operator<=

Testa se o objeto string no lado esquerdo do operador é menor ou igual ao objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator<=(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator<=(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator<=(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador for lexicograficamente menor ou igual ao objeto string no lado direito; caso contrário false.

Observações

Uma comparação lexicográfica entre cordas compara-as caractere por caractere até:

  • Ele encontra dois caracteres correspondentes desiguais, e o resultado de sua comparação é tomado como o resultado da comparação entre as cadeias de caracteres.

  • Ele não encontra desigualdades, mas uma string tem mais caracteres do que a outra, e a string mais curta é considerada menor do que a string mais longa.

  • Ele não encontra desigualdades e descobre que as cadeias de caracteres têm o mesmo número de caracteres, então as cadeias são iguais.

Exemplo

// string_op_le.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "strict" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "strict";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 <= s2 )
      cout << "The string s1 is less than or equal to "
           << "the string s2." << endl;
   else
      cout << "The string s1 is greater than "
           << "the string s2." << endl;

   // Second member function: comparison between left-side object
   // of type basic_string & right-side object of C-syle string type
   if ( s1 <= s3 )
      cout << "The string s1 is less than or equal to "
           << "the string s3." << endl;
   else
      cout << "The string s1 is greater than "
           << "the string s3." << endl;

   // Third member function: comparison between left-side object
   // of C-syle string type  & right-side object of type basic_string
   if ( s2 <= s3 )
      cout << "The string s2 is less than or equal to "
           << "the string s3." << endl;
   else
      cout << "The string s2 is greater than "
           << "the string s3." << endl;
}
The basic_string s1 = strict.
The basic_string s2 = strum.
The C-style string s3 = strict.
The string s1 is less than or equal to the string s2.
The string s1 is less than or equal to the string s3.
The string s2 is greater than the string s3.

operator<<

Uma função de modelo que grava uma cadeia de caracteres no fluxo de saída.

template <class CharType, class Traits, class Allocator>
basic_ostream<CharType, Traits>& operator<<(
    basic_ostream<CharType, Traits>& _Ostr,
    const basic_string<CharType, Traits, Allocator>& str);

Parâmetros

_Ostr
O fluxo de saída que está sendo gravado.

STR
A cadeia de caracteres a ser inserida no fluxo de saída.

Valor de retorno

Grava o valor da cadeia de caracteres especificada no fluxo de saída _Ostr.

Observações

A função de modelo sobrecarrega o operador<< para inserir um objeto str de modelo de classe basic_string no fluxo _Ostr. A função retorna efetivamente _Ostr.write( str.c_str, str.size ).

operator>

Testa se o objeto string no lado esquerdo do operador é maior do que o objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator>(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator>(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator>(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador for lexicograficamente maior do que o objeto string no lado direito; caso contrário false.

Observações

Uma comparação lexicográfica entre cordas compara-as caractere por caractere até:

  • Ele encontra dois caracteres correspondentes desiguais, e o resultado de sua comparação é tomado como o resultado da comparação entre as cadeias de caracteres.

  • Ele não encontra desigualdades, mas uma string tem mais caracteres do que a outra, e a string mais curta é considerada menor do que a string mais longa.

  • Ele não encontra desigualdades e descobre que as cadeias de caracteres têm o mesmo número de caracteres, e assim as cadeias de caracteres são iguais.

Exemplo

// string_op_gt.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "strict" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "stricture";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 > s2 )
      cout << "The string s1 is greater than "
           << "the string s2." << endl;
   else
      cout << "The string s1 is not greater than "
           << "the string s2." << endl;

   // Second member function: comparison between left-side object
   // of type basic_string & right-side object of C-syle string type
   if ( s3 > s1 )
      cout << "The string s3 is greater than "
           << "the string s1." << endl;
   else
      cout << "The string s3 is not greater than "
           << "the string s1." << endl;

   // Third member function: comparison between left-side object
   // of C-syle string type & right-side object of type basic_string
   if ( s2 > s3 )
      cout << "The string s2 is greater than "
           << "the string s3." << endl;
   else
      cout << "The string s2 is not greater than "
           << "the string s3." << endl;
}
The basic_string s1 = strict.
The basic_string s2 = strum.
The C-style string s3 = stricture.
The string s1 is not greater than the string s2.
The string s3 is greater than the string s1.
The string s2 is greater than the string s3.

operator>=

Testa se o objeto string no lado esquerdo do operador é maior ou igual ao objeto string no lado direito.

template <class CharType, class Traits, class Allocator>
bool operator>=(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right);

template <class CharType, class Traits, class Allocator>
bool operator>=(
    const basic_string<CharType, Traits, Allocator>& left,
    const CharType* right);

template <class CharType, class Traits, class Allocator>
bool operator>=(
    const CharType* left,
    const basic_string<CharType, Traits, Allocator>& right);

Parâmetros

esquerda
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

direito
Uma cadeia de caracteres estilo C ou um objeto do tipo basic_string a ser comparado.

Valor de retorno

true se o objeto string no lado esquerdo do operador for lexicograficamente maior ou igual ao objeto string no lado direito; caso contrário false.

Observações

Uma comparação lexicográfica entre cordas compara-as caractere por caractere até:

  • Ele encontra dois caracteres correspondentes desiguais, e o resultado de sua comparação é tomado como o resultado da comparação entre as cadeias de caracteres.

  • Ele não encontra desigualdades, mas uma string tem mais caracteres do que a outra, e a string mais curta é considerada menor do que a string mais longa.

  • Ele não encontra desigualdades e descobre que as cadeias de caracteres têm o mesmo número de caracteres, e assim as cadeias são iguais.

Exemplo

// string_op_ge.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "strict" );
   string s2 ( "strum" );
   cout << "The basic_string s1 = " << s1 << "." << endl;
   cout << "The basic_string s2 = " << s2 << "." << endl;

   // Declaring a C-style string
   char *s3 = "stricture";
   cout << "The C-style string s3 = " << s3 << "." << endl;

   // First member function: comparison between left-side object
   // of type basic_string & right-side object of type basic_string
   if ( s1 >= s2 )
      cout << "The string s1 is greater than or equal to "
           << "the string s2." << endl;
   else
      cout << "The string s1 is less than "
           << "the string s2." << endl;

   // Second member function: comparison between left-side object
   // of type basic_string & right-side object of C-syle string type
   if ( s3 >= s1 )
      cout << "The string s3 is greater than or equal to "
           << "the string s1." << endl;
   else
      cout << "The string s3 is less than "
           << "the string s1." << endl;

   // Third member function: comparison between left-side object
   // of C-syle string type & right-side object of type basic_string
   if ( s2 >= s3 )
      cout << "The string s2 is greater than or equal to "
           << "the string s3." << endl;
   else
      cout << "The string s2 is less than "
           << "the string s3." << endl;
}
The basic_string s1 = strict.
The basic_string s2 = strum.
The C-style string s3 = stricture.
The string s1 is less than the string s2.
The string s3 is greater than or equal to the string s1.
The string s2 is greater than or equal to the string s3.

operator>>

Uma função de modelo que lê uma cadeia de caracteres de um fluxo de entrada.

template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& operator>>(
    basic_istream<CharType, Traits>& _Istr,
    basic_string<CharType, Traits, Allocator>& right);

Parâmetros

_Istr
O fluxo de entrada usado para extrair a sequência

direito
A cadeia de caracteres que está sendo extraída do fluxo de entrada.

Valor de retorno

Lê o valor da cadeia de caracteres especificada de _Istr e o retorna à direita.

Observações

O operador ignora os espaços em branco à esquerda, a menos que o skipws sinalizador esteja definido. Ele lê todos os caracteres a seguir até que o próximo caractere seja um espaço em branco ou o final do arquivo seja atingido.

A função de modelo sobrecarrega o operador>> para substituir a sequência controlada pela direita por uma sequência de elementos extraídos do fluxo _Istr. Paragens de extração:

  • No final do arquivo.

  • Após a função extrai _Istr. elementos width , se esse valor for diferente de zero.

Após a função extrai _Istr. max_size elementos.

  • Depois que a função extrai um elemento ch para o qual use_facet<ctype<CharType>>(getloc). is( ctype<CharType>:: space, ch) é true, caso em que o caractere é colocado de volta.

Se a função não extrair nenhum elemento, ela chamará setstate(ios_base::failbit). De qualquer forma, chama istr. width(0) e retorna * this.

Exemplo

// string_op_read_.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   string c0;
   cout << "Input a string c0 ( try: Fibonacci numbers ): ";
   cin >> c0;
   cout << "The string entered is c0 = " << c0 << endl;
}

Ver também

<string>