vocales una ultimo quitar primer obtener funcion extraer eliminar como caracteres caracter cadena c++ string substring

una - Eliminar el último carácter de la cadena C++



obtener el primer caracter de una cadena c++ (12)

Con C ++ 11, ni siquiera necesita la longitud / tamaño. Siempre que la cadena no esté vacía, puede hacer lo siguiente:

if (!st.empty()) st.erase(std::prev(st.end())); // Erase element referred to by iterator one // before the end

¿Cómo puedo eliminar el último carácter de una cadena de C ++?

Intenté st = substr(st.length()-1); Pero no funcionó.


Enfrentó la misma situación y encontró tal solución:

CString str; // working with this variable if (!str.IsEmpty()) // or if(str.GetLength() > 0) str.Delete(str.GetLength()-1);

Tal vez sea útil para alguien.


Eso es todo lo que necesitas:

#include <string> //string::pop_back & string::empty if (!st.empty()) st.pop_back();


Para C ++ 11 puedes usar string :: back like,

std::string stringName ("milan#") ; stringName.back() =''$''; std::cout<<stringName; **Output:** milan$


Para una versión no mutante:

st = myString.substr(0, myString.size()-1);


Si la longitud no es cero, también puede

str[str.length() - 1] = ''/0'';


Solución simple si está usando C ++ 11. Probablemente O (1) vez también:

st.pop_back();



str.erase(str.begin() + str.size() - 1)

str.erase(str.rbegin()) no se compila desafortunadamente, ya que reverse_iterator no se puede convertir a un_nombre_normal.

C ++ 11 es tu amigo en este caso.


buf.erase(buf.size() - 1);

Esto supone que sabes que la cadena no está vacía. De ser así, obtendrás una excepción out_of_range .


if (str.size () > 0) str.resize (str.size () - 1);

Una alternativa std :: erase es buena, pero me gusta el "- 1" (ya sea basado en un tamaño o un iterador final) - para mí, ayuda a expresar la intención.

Por cierto, ¿realmente no hay std :: string :: pop_back? - parece extraño.


int main () { string str1="123"; string str2 = str1.substr (0,str1.length()-1); cout<<str2; // output: 12 return 0; }