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

Voglio eliminare tutto '!' su DelStr e voglio sostituire tutto '/' con '-' sulla stringa RepStr.Sostituisci rimuovi carattere nella stringa

C'è un modo per farlo senza fare un ciclo per passare attraverso ogni personaggio?

+0

possibile duplicato di [C++ character replace] (http://stackoverflow.com/questions/1820394/c-character-replace) –

+1

No, la rimozione non è stata risolta lì. –

+0

tuttavia lo fai, è necessario un ciclo; potresti non farlo, il metodo chiamato sicuramente lo farà. – vulkanino

risposta

12

Remove le esclamazioni:

#include <algorithm> 
#include <iterator> 

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

In alternativa, se si desidera stampare la stringa, non è necessario la variabile result:

#include <iostream> 

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

Replace slash con trattini:

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

Grazie! Funziona alla grande. – Cornwell

+1

Si noti che ciò significa che se si tenta di utilizzare result.size(), si otterrà la dimensione di destStr, poiché il risultato conterrà anche caratteri null aggiuntivi. – 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.) 
Problemi correlati