2013-03-29 4 views
0

wstring을 "유효성을 검사"하고 원하지 않는 문자를 제거하고 싶습니다.C++에서 wstring의 각 문자를 찾아서 바꾸십시오.

wstring wsInput=L"Some Text $$!$§"; 

wstring wsNew=L""; 

for (int i=0;i<wsInput.size();i++) 
{ 
    wstring wsChar=wsInput.CharacterAt(i); 
    wsChar = ToValidWString(wsChar); // ToValidWString will return L"" if the character is not among the valid characters 
    wsNew.append(wsChar); 
} 

return wsNew; 

그러나 이러한 기능 ".CharacterAt는()"형식 wstring에 대한이 없습니다 :

이 내가하고 싶은 것입니다. 그 이유는 분명하지만 어쨌든 필요합니다.

누군가 도울 수 있습니까?

감사합니다.

+0

가 배열이 아닌 마음 문자열에서 유지의 [사용하십시오 CharNext] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms647469 (v = vs.85) .aspx) 함수 또는 이와 유사한 유니 코드를 고려해야합니다. – demorge

답변

1

[] 연산자를 사용할 수 있습니다. 문자열이 아닌 wchar을 반환하지만 코드가 단순 해지는 것처럼 보입니다. 그래서 일을 명확하게하기 :

for (int i=0;i<wsInput.size();i++) 
{ 
    wchar_t wc =wsInput[i]; // sorry for the name it comes from wchar ;) 
    ... do stuff... 
} 

편집 : substr 사용하는 문자열의 i 번째 문자로 구성되는 형식 wstring를 얻을 수 :

for (int i=0;i<wsInput.size();i++) 
{ 
    wstring ws = wsInput.substr(i, 1); 
    ... do stuff... 
} 
+0

wchar은 내가 필요한 것이 아닙니다. 정말 wstring이 필요합니다. – tmighty

+0

@tmighty 그럼'substr'을 다음과 같이 사용할 수 있습니다 :'wsInput.substr (i, 1)' –

+0

아, 정말 고마워요! substr 내가 찾고 있던 것입니다. 그 질문에 답해 주시겠습니까? – tmighty