오늘은 아주 간단한 것이지만, 몇 시간 동안 저를 괴롭혔습니다. 내 문자열 반복기의 부제에 문제가 있다고 생각합니다. 나는 온라인에서 보았고 코드를 CSE 교수에게 넘겨주었습니다.하지만 추수 감사절의 휴식과 함께, 그는 단지 그의 전화를 가지고 많은 도움을 줄 수 없었습니다.반복자를 사용하여 문자열에서 특수 문자를 제거하십시오.
누군가가 이것을보고 즉시 문제를 파악할 수 있기를 바랍니다. 참고로, 필자의 목표는 단순히 문자열에서 특수 문자를 제거하는 것입니다. 이 문자열은 참조로 함수에 전달됩니다 (반환 유형이 필요하지 않음). 추가 참고 사항으로, 나는 이것을 가능한 한 효율적으로 유지하려고 노력하고 있습니다. 나의 원래 생각은 단순히 for를 for 중첩 된 for 루프로 변경하는 것이었지만 CSE 교수는 문자열 반복자가있는 for 루프가 일부 특수한 경우에 더 효율적이라는 것을 유지하므로이를 준수해야합니다. 아무도 도와 줄 수 있으면 알려주세요 !!
제거 기능에는 remove가 char *가 아닌 const char *을 사용하므로 문제가 있다고 생각됩니다. text.begin()이 const가 아니므로이 문제가 발생한다고 가정합니다. 그러나 함수의 문자열을 & 문자열로 만들면 참조로 텍스트를 수정할 수 없습니다. 메인에서
을 우리가 가지고 :
string temp = "~cool~";
XML * parser = new XML();
parser->clearSpecialChars(temp);
cout << temp;
및 기능은 다음과 같습니다
void XML::clearSpecialChars(string &text)
{
char chars[]= ".,!()1234567890[]'<>:/{}_|=+;-`~";
for (unsigned int i = 0; i < 33; ++i)
{
text.erase(std::remove(text.begin(),text.end(),chars[i]),text.end());
}
}
그러나, 나는 컴파일러 오류가 발생하고 여기에
내가 지금까지 가지고있는 코드입니다 of :생각은 크게 감사하겠습니다!
"알고리즘"헤더를 포함 시켰습니까? ''remove''라는 또 다른 함수가 있는데''const char *''를 매개 변수로 받아들입니다. – hinafu