La cadena se encuentra fuera de rango.
La tarea es intercambiar dos partes de una palabra que contiene un guión (por ejemplo, tenemos 1237-456 pero deberíamos transformarlo en 456-1237). Aquí está mi código, funciona pero no muestra resultados ya que una cadena está fuera de rango y no sé por qué. Ocurrió en el primer bucle, la segunda iteración termina en error y sucede cuando strlen es 5 o más. El código:
La tarea es intercambiar dos partes de una palabra que contiene un guión (por ejemplo, tenemos 1237-456 pero deberíamos transformarlo en 456-1237). Aquí está mi código, funciona pero no muestra resultados ya que una cadena está fuera de rango y no sé por qué. Ocurrió en el primer bucle, la segunda iteración termina en error y sucede cuando strlen es 5 o más. El código:
davy.ai
Parece que hay un problema con la forma en que manejas las cadenas
first
ysecond
. El problema es que no estás asignando memoria para estas cadenas, por lo que cuando intentas asignar un caracter a ellas, está fuera de rango. Puedes arreglar esto asignando memoria para las cadenas antes de asignar caracteres a ellas. Por ejemplo, puedes usar la funciónresize
para asignar memoria para las cadenas:“`
#include
#include
#include
using namespace std;
int main()
{
int u = 0, y = 0;
string first, second;
int i = 0;
string word;
cout << “Ingresa el texto: ” << endl;
getline(cin, word);
int l = size(word);
int f = word.find(‘-‘);
cout << “La palabra tiene ” << l << ” caracteres” << endl << endl;
first.resize(f);
second.resize(l – f – 1);
for (int i = 0; i < f; i++) {
first[i] = word[i];
}
for (int i = f + 1; i < l; i++) {
second[y] = word[i];
y++;
}
cout << endl << second << ” – ” << first << endl;
}
“`