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

Tüm '!' Silmek istiyorum DelStr ve RepStr dizesindeki tüm '/' ile '-' değiştirmek istiyorum.Karakteri değiştir karakteri kaldırmak için

Her karakterden geçmek için bir döngü yapmadan bunu yapmanın bir yolu var mı?

+0

[C++ karakteri değiştir] olası bir kopyası (http://stackoverflow.com/questions/1820394/c-character-replace) –

+1

Hayır, orada kaldırılmadı. –

+0

Ancak bunu yaparsanız, bir döngü gereklidir; Bunu yapamazsınız, denilen yöntem kesinlikle olacaktır. – vulkanino

cevap

12

Remove ünlem:

#include <iostream> 

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

Replace tire ile eğik:

std::replace(repStr.begin(), repStr.end(), '/', '-'); 
dizeyi yazdırmak istiyorsanız Alternatif

#include <algorithm> 
#include <iterator> 

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

, sen result değişkeni gerekmez

+0

Teşekkürler! Harika çalışıyor. – Cornwell

+1

Bunun, result.size() yöntemini kullanmayı denerseniz, sonuçta ek boş karakterler de içereceğinden, destStr boyutunu alacaksınız demektir. – 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.)