C ++ find devuelve la última palabra en el texto de la variable de cadena. cadena getFirstWord (texto)

Intenté ir al final de la cadena, retroceder hasta el último espacio, luego avanzar hasta el final de la palabra y almacenar esa palabra en una cadena vacía. No se permiten matrices o punteros.

string getLastWord(string text) { string lastword=""; int last=text.size()- 1; int beginlast=0; if text == ""; return ""; for (int i=last; i>=1; i--) { if (isspace(text[i])) beginlast=beginlast+i; } for (int k=0; k!=text.size; k++) { if (isalpha(text[k])) lastword=lastword+lastword[k]; } return lastword; } 

has visto la función

 string.find_last_of( ' ' ); 

?

Tal vez algo como esto. Recortamos los espacios del final primero. Si desea considerar otros tipos de espacio en blanco ignorable, puede extender esto de forma trivial.

 std::string input; // your data std::size_t pos = input.size(); while (input[pos] == ' ' && pos > 0) --pos; if (pos == 0) { /* string consists entirely of spaces */ } std::string result = input.substr(input.find_last_of(' ', pos)); 

Para hacerlo manualmente:

 std::string input; // your data std::size_t pos = input.size(); while (input[pos] == ' ' && pos > 0) --pos; if (pos == 0) { /* string consists entirely of spaces */ } const std::size_t pos_end = pos; while (input[pos] == ' ' && pos > 0) --pos; std::string result = input.substr(pos, pos_end - pos); 
 #include #include using namespace std; int main() { int l,d,i; char a[100]; cout<<"Enter the string: "<