Supprimer le dernier caractère de la chaîne C ++

Comment puis-je supprimer le dernier caractère d’une chaîne C ++?

J’ai essayé st = substr(st.length()-1); Mais ça n’a pas marché.

Pour une version non-mutante:

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

Solution simple si vous utilisez C ++ 11. Probablement O (1) temps aussi:

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

Une alternative std :: erase est bonne, mais j’aime bien le “-1” (basé sur une taille ou un iterator final) – pour moi, cela aide à exprimer l’intention.

BTW – Y at-il vraiment pas std :: ssortingng :: pop_back? – semble étrange.

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

Cela suppose que vous savez que la chaîne n’est pas vide. Si oui, vous obtiendrez une exception out_of_range .

str.erase( str.end()-1 )

Référence: std :: ssortingng :: erase () prototype 2

non c ++ 11 ou c ++ 0x nécessaire.

 int main () { ssortingng str1="123"; ssortingng str2 = str1.substr (0,str1.length()-1); cout<  

Avec C ++ 11, vous n’avez même pas besoin de la longueur / taille. Tant que la chaîne n’est pas vide, vous pouvez effectuer les opérations suivantes:

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

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

str.erase(str.rbegin()) ne comstack malheureusement pas, puisque reverse_iterator ne peut pas être converti en un normal_iterator.

C ++ 11 est votre ami dans ce cas.

C’est tout ce dont vous avez besoin:

 #include  //ssortingng::pop_back & ssortingng::empty if (!st.empty()) st.pop_back(); 

Si la longueur est non nulle, vous pouvez aussi

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

Face à la même situation et trouvé une telle solution:

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

Peut-être que ce sera utile pour quelqu’un.

Pour C ++ 11, vous pouvez utiliser ssortingng :: back like,

 std::ssortingng ssortingngName ("milan#") ; ssortingngName.back() ='$'; std::cout<