2010-10-07 18 views
7
string DelStr = "I! am! bored!"; 
string RepStr = "10/07/10" 

Quiero eliminar todo '!' en DelStr y quiero reemplazar todo '/' por '-' en la cadena RepStr.Reemplazar eliminar carácter en la cadena

¿Hay alguna manera de hacer esto sin hacer un ciclo para revisar cada carácter?

+0

posible duplicado de [reemplazo de caracteres en C++] (http://stackoverflow.com/questions/1820394/c-character-replace) –

+1

No, la eliminación no se abordó allí. –

+0

, sin embargo lo haces, se necesita un ciclo; no puedes hacerlo, el método llamado seguramente lo hará. – vulkanino

Respuesta

12

Remove las exclamaciones:

#include <algorithm> 
#include <iterator> 

std::string result; 
std::remove_copy(delStr.begin(), delStr.end(), std::back_inserter(result), '!'); 

Alternativamente, si desea imprimir la cadena, que no necesita la variable result:

#include <iostream> 

std::remove_copy(delStr.begin(), delStr.end(), 
       std::ostream_iterator<char>(std::cout), '!'); 

Replace barras diagonales con guiones:

std::replace(repStr.begin(), repStr.end(), '/', '-'); 
+0

¡Gracias! Funciona genial. – Cornwell

+1

Tenga en cuenta que esto significará que si prueba y utiliza result.size(), obtendrá el tamaño de destStr, ya que el resultado también contendrá caracteres nulos adicionales. – deworde

0
#include<iostream.h> 
#include<string.h> 
#include<conio.h> 
void main() 
{ 
clrscr(); 
char a[200],ch,ch1; 
int temp=0,i,j,x,len,z,f,k=0; 
cout<<"Enter String: "; 
cin.getline(a,150); 
len=strlen(a); 
cout<<"\n\nLength Of String: "; 
cout<<len; 
cout<<"\n\n\nReplace: "; 
cin>>ch; 
cout<<"\n\nReplace with: "; 
cin>>ch1; 
for(i=0;i<len;i++) 
{ 
if(ch==a[i]) 
{ 
temp=a[i]; 
a[i]=ch1; 
} 
} 
cout<<"\n\nUpdated String: "; 
for(i=0;i<len;i++) 
{ 
cout<<a[i]; 
} 
getch(); 
} 

Example: 
Enter String: Hey! How Are You. 
Replace: H 
Replace with: m 
Output: mey! mow Are You. 

(Note: Every character has its ascii code. Such as 'H' and 'h' are two different characters.) 
Cuestiones relacionadas