2010-12-06 9 views
1

내일 C++ 교과서에서 시험 문제로 공부하고 있습니다.문자열의 일부를 x의 C++로 바꿉니다

우리는 문자열로 거의 처리하지 못했지만 여기에 내 문제가 있습니다.

//    name   ss#  username password 

string data = "Santa Claus 454-90-3424 sclaus passwordy" 
string data2 = "Morgan Freeman 554-40-1124 mfree passwordx" 

내가 필요 XXX-XX-XXXX 문자의 수에 대한 모든 X의와 암호로 사회 보장 번호를 대체 할 것이다 될 경우 그 문자열 모두에서 작동 할 수있는 기능을 작성하려면 비밀번호. 간단한 문자열 함수로 어떻게 할 수 있습니까?

+0

당신의 의견은 아마도 유용 할 거라 생각하지만, 나는 당신이 생각하는 것보다 훨씬 덜 경험이 있습니다. : ( –

+0

:/어떻게 passwordx 나 passwordy 또는 pass2를 얻을 수 있습니까? 암호는 –

답변

0

replace_if 기능을 algorithm에 사용하십시오. (문서 및 예제 코드 here 참조). 문제는 다음과 같이 해결할 수 있습니다.

#include <algorithm> // for replace_if 
    #include <cctype> // for isdigit 

    std::replace_if(data.begin(), data.end(), isdigit, 'x'); 
    // => Santa Claus xxx-xx-xxxx sclaus passwordy 

    std::replace_if(data2.begin(), data2.end(), isdigit, 'x'); 
    // => Morgan Freeman xxx-xx-xxxx mfree passwordx 
+0

도와 주셔서 감사합니다! 암호를 x로 바꾸는 방법도 알고 계십니까? 예를 들어 passwordy가 45Z4Y이면 xxxxx (각 문자 x)로 바꿉니다. 다시 불쾌하게 해드릴 수 있습니다! –

2

토큰 화를 살펴보십시오. 전체 문자열을 공백으로 구분 한 다음 세 번째와 다섯 번째 세트를 X로 바꿉니다.

관련 문제