Programación de vocabulario en inglés

Quizás \0 no se agregue a la cadena, la matriz b[80] no muestra la inicialización 0 y \0 no se agregue explícitamente a la función de búsqueda. No entiendo tu algoritmo, así que solo puedo adivinar así. Para escribir un método de biblioteca estándar, puede consultar lo siguiente:

# include & ltiostream & gt

# include & ltsstream & gt

# include & ltmap & gt

Usar espacio de nombres std

int main()

{

typedef string::size _ type ST;

p>

//Almacena la longitud de todas las palabras, la palabra en sí y la posición donde aparece la palabra.

Mapa múltiple & ltST, par & ltstring, ST & gt& gtm;

String

cout & lt& ltIngrese una oración en inglés:

p>

getline(cin, línea);

ST pos = 0;

mientras((pos=line.find(','))& ltline .size( ))

Línea [pos] = ""; //Reemplazar todas las comas.

istringstream ins(line);

Token de cadena;

pos = 0;

while(ins & gt; & gt token )

m . insertar(par & lt; ST, par & ltstring, ST & gt& gt(token.size(),

par & ltstring, ST & gt (token, pos=line.find(token, pos)+1));

ST t = m r begin()-& gt;

// Los contenedores de mapas están ordenados. por clave, siendo el último el que tiene la longitud más larga

for(multimap & lt; ST, pair & ltstring, ST & gt& gt::reverse _ iterator it = m . Rb comenzar( );

it! = m. rend();++it)

if (it->first==t)

cout & lt& lt"El la palabra más larga es"

& lt& lt"La posición inicial es:"

else break

}

Si hay palabras de tienen la misma longitud, se muestran en orden inverso, lo que facilita comenzar desde 1.