Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Equivalente a Replace en C++

Estas en el tema de Equivalente a Replace en C++ en el foro de C/C++ en Foros del Web. Hola, En una aplicación de C++ (MFC) Tengo una cadena (CString) que contiene caracteres de todo tipo. Lo que necesito es reemplazar el caracter "$" ...
  #1 (permalink)  
Antiguo 08/03/2010, 17:21
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 15 años, 3 meses
Puntos: 1
Equivalente a Replace en C++

Hola,

En una aplicación de C++ (MFC) Tengo una cadena (CString) que contiene caracteres de todo tipo. Lo que necesito es reemplazar el caracter "$" por un "*". En C# se hace de forma muy sencilla con la función "Replace". ¿Hay algo parecido en C++?
Si no lo hay, ¿Alguien sabe otra forma de hacerlo?

Muchas gracias.

Un saludo.
  #2 (permalink)  
Antiguo 08/03/2010, 18:06
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años, 6 meses
Puntos: 20
Respuesta: Equivalente a Replace en C++

Mira, no manejo muy bien strings, capaz hay una forma mas facil de hacerlo, yo lo hice de esta forma y me funciono, espero te sirva, saludos.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[]) {
  7.    
  8.     string str1 = "jkn$uso$cw92$87&3";
  9.     string str2 = "$";
  10.     string str3 = "*";
  11.     int i=0;
  12.    
  13.     while(i==0){ //la variable i la puse solamente para que funcione el ciclo
  14.         string::size_type pos= str1.find (str2, 0); //find busca en str1 lo que esta en str2 y devuelve la posición
  15.         if (pos==string::npos) break; //si no encuentra lo que busca ($) entra al if y ejecuta el break y sale del ciclo
  16.         cout<<pos<<endl;
  17.         str1.replace (pos, 1, str3); //pos indica donde esta $, el 1 es para decirle a replace cuantos caracteres tiene que reemplazar y str3 es lo que tiene que pegar en su lugar
  18.         cout<<str1<<endl;
  19.     }
  20.    
  21.     return 0;
  22. }


Los cout son solo decorativos :P
  #3 (permalink)  
Antiguo 09/03/2010, 01:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Equivalente a Replace en C++

Hola,

El problema es que veo que estás usando la función "replace" (y creo que tu código está escrito en C#).

Lo que yo necesito es algo que haga lo mismo pero para C++ (MFC - Visual Studio 2005). En C++ no existe la función "replace", por eso necesito otra alternativa.

Muchas gracias de todos modos.

Un saludo.
  #4 (permalink)  
Antiguo 09/03/2010, 02:10
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Respuesta: Equivalente a Replace en C++

Eso es C++, string es standard al igual que su metodo replace.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 09/03/2010, 05:19
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Equivalente a Replace en C++

Hola de nuevo,

Si, cierto. Acabo de verlo. Además "Replace" es una función miembro de la clase CString en MFC: Funciones Miembro - CString

Muchas gracias.

Un saludo.
  #6 (permalink)  
Antiguo 09/03/2010, 05:48
 
Fecha de Ingreso: diciembre-2008
Mensajes: 49
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Equivalente a Replace en C++

La forma mas sencilla de hacerlo es guardar la cadena en un array y con un puntero a dicho array recorrerlo (con un for) hasta encontrar el caracter que quieres reemplazar. Cuando lo encuentre guardar en esa posicion del array el caracter deseado.

Bueno es mas sencillo con esa funcion pero asi qda mas chulo jejeje.
Cuando tenga el código lo pongo.
  #7 (permalink)  
Antiguo 09/03/2010, 06:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 49
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Equivalente a Replace en C++

#include <cstdlib>
#include <iostream>
#define M 255

using namespace std;


int main(int argc, char *argv[])
{
char arr[M]="xxxxx$ $$$ xxx$"; //Array que contiene la cadena.

char * ptArr; //Este es el puntero con el que recorreremos el array que contiene nuestra cadena
ptArr=arr; //Apuntamos con el puntero al array
int i=0;

cout<<"Cadena Inicial: "<<arr<<"\n";//Imprimimos antes de que sufra el cambio, para que podamos visualizar la cadena inicial
for(i=0;i<M;i++) //Inicializamos a 0, establecemos la condicion--> para que recorra todos los elementos, incrementamos--> para que pase al siguiente elemento del array
{
if(arr[i]=='$')//Si el elemento contiene el caracte $
{
arr[i]='*';//Cambia el contenido de ese elemento del array por el caracter *
}
}
cout<<"Cadena Final: "<<arr<<"\n\n";

system("PAUSE");
return EXIT_SUCCESS;
}

Etiquetas: equivalente, replace
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:59.