llenar string con algo

Iniciado por flony, 17 Junio 2013, 02:08 AM

0 Miembros y 1 Visitante están viendo este tema.

flony

hola gente tengo una duda ...quiero llenar un string con algo y me sale este error
expession string subscript out of range
#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
       signed int tamano;
       cout<<"ingrese uno "<<endl;
getline(cin, uno);
       tamano=uno.size();
       for (int i = 0; i <= tamano-1; i++)
{
dos[i]='+';
}
        .....etc etc etc.......
       return 0;
}

la otra q probe pero sale el mismo error es
]#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
       signed int tamano;
       cout<<"ingrese uno "<<endl;
getline(cin, uno);
       for (int i = 0; i <=uno.size(); i++)
{
dos[i]='+';
}
si un problema no tiene solucion entonces no es un problema...es algo inevitable

ecfisa

#1
Hola flony.

Proba de este modo:
Código (cpp) [Seleccionar]

#include<iostream>
#include<string>

using  namespace std;

int main ()
{
  string uno, dos;

  cout<<"ingrese uno "<<endl;
  getline(cin, uno);
  dos.assign(uno.size(), '+');
 ...


Saludos.

leosansan

#2
A mí error, lo que se dice error, no meda. Otra cosa es que lo que pareces querer, que el string se componga de tantos signos + como la longitud de uno no funciona como en los arrays, sino que hay que hacer uso de .append o, como bien comenta amchacon en el siguiente post, de +=, para ir guardando/creando memoria. Otra cosa distinta es acceder a los elementos de un string ya creado como en un array, que sí se puede. Una salida como ejemplo aclaratorio;

Código (cpp) [Seleccionar]

ingrese uno
12345
+
++
+++
++++
+++++
12345  +++++


Código (cpp) [Seleccionar]

#include<iostream>
#include<string>

using  namespace std;

int main ()
{
   int i=0;
   string uno;
   string dos;
   cout<<"ingrese uno "<<endl;
   getline(cin, uno);
   for ( i = 0; i <uno.size(); i++)
{
dos.append("+");
cout<<dos<<endl;
}
   cout<<uno<<"  "<<dos<<endl;
   return 0;
}


Saluditos!

amchacon

Código (cpp) [Seleccionar]
#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
        signed int tamano;
        cout<<"ingrese uno "<<endl;
getline(cin, uno);
        for (int i = 0; i <=uno.size(); i++)
{
dos[i]='+';
}

       return 0;
}


Te has equivocado en una cosa. En lugar de "dos" tendría que ser uno:

Código (cpp) [Seleccionar]
#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
        signed int tamano;
        cout<<"ingrese uno "<<endl;
getline(cin, uno);
        for (int i = 0; i <=uno.size(); i++)
{
uno[i]='+';
}

       return 0;
}


Si lo que querías era otro string con +

Código (cpp) [Seleccionar]
#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
        signed int tamano;
        cout<<"ingrese uno "<<endl;
getline(cin, uno);
        for (int i = 0; i <=uno.size(); i++)
{
dos[i]='+';
}

       return 0;
}


Te has equivocado en una cosa. En lugar de "dos" tendría que ser uno:

Código (cpp) [Seleccionar]
#include<iostream>
#include<string>

using  namespace std;

int main ()
{
string uno;
string dos;
        signed int tamano;
        cout<<"ingrese uno "<<endl;
getline(cin, uno);
        for (int i = 0; i <=uno.size(); i++)
{
dos += '+';
}

       return 0;
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

flony

gracias amchacon esa es la respuesta, ahora lo de dos.assign(uno.size(), '+'); lo voy a revisar...siempre hay mas de un camino a roma
si un problema no tiene solucion entonces no es un problema...es algo inevitable