Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: flony en 17 Junio 2013, 02:08 AM

Título: llenar string con algo
Publicado por: flony en 17 Junio 2013, 02:08 AM
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]='+';
}
Título: Re: llenar string con algo
Publicado por: ecfisa en 17 Junio 2013, 07:01 AM
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.
Título: Re: llenar string con algo
Publicado por: leosansan en 17 Junio 2013, 07:39 AM
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!
(http://i1280.photobucket.com/albums/a497/leosansan/leosan1/leones%20peques/leonpersonajepeque_zps25f3622f.jpg)
Título: Re: llenar string con algo
Publicado por: amchacon en 17 Junio 2013, 11:41 AM
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;
}
Título: Re: llenar string con algo
Publicado por: flony en 18 Junio 2013, 03:51 AM
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