Foro de elhacker.net

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
Código:
#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
Código:
]#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
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8.  string uno, dos;
  9.  
  10.  cout<<"ingrese uno "<<endl;
  11.  getline(cin, uno);
  12.  dos.assign(uno.size(), '+');
  13.  ...
  14.  

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
  1. ingrese uno
  2. 12345
  3. +
  4. ++
  5. +++
  6. ++++
  7. +++++
  8. 12345  +++++
  9.  

Código
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8.    int i=0;
  9.    string uno;
  10.    string dos;
  11.    cout<<"ingrese uno "<<endl;
  12.    getline(cin, uno);
  13.    for ( i = 0; i <uno.size(); i++)
  14. {
  15. dos.append("+");
  16. cout<<dos<<endl;
  17. }
  18.    cout<<uno<<"  "<<dos<<endl;
  19.    return 0;
  20. }
  21.  

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
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8. string uno;
  9. string dos;
  10.        signed int tamano;
  11.        cout<<"ingrese uno "<<endl;
  12. getline(cin, uno);
  13.        for (int i = 0; i <=uno.size(); i++)
  14. {
  15. dos[i]='+';
  16. }
  17.  
  18.       return 0;
  19. }

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

Código
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8. string uno;
  9. string dos;
  10.        signed int tamano;
  11.        cout<<"ingrese uno "<<endl;
  12. getline(cin, uno);
  13.        for (int i = 0; i <=uno.size(); i++)
  14. {
  15. uno[i]='+';
  16. }
  17.  
  18.       return 0;
  19. }

Si lo que querías era otro string con +

Código
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8. string uno;
  9. string dos;
  10.        signed int tamano;
  11.        cout<<"ingrese uno "<<endl;
  12. getline(cin, uno);
  13.        for (int i = 0; i <=uno.size(); i++)
  14. {
  15. dos[i]='+';
  16. }
  17.  
  18.       return 0;
  19. }

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

Código
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using  namespace std;
  5.  
  6. int main ()
  7. {
  8. string uno;
  9. string dos;
  10.        signed int tamano;
  11.        cout<<"ingrese uno "<<endl;
  12. getline(cin, uno);
  13.        for (int i = 0; i <=uno.size(); i++)
  14. {
  15. dos += '+';
  16. }
  17.  
  18.       return 0;
  19. }


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
Código:
dos.assign(uno.size(), '+');
lo voy a revisar...siempre hay mas de un camino a roma