URI 문제 재질문! show1296 URI 문제 재질문합니다! 여전히 안되네요 ㅠㅠ 부탁드립니다. #include <iostream> #include <string> using namespace std; string translator(string inputString){ if(inputString.find("%2") == string::npos){ return inputString; } else{ int pos =(int)inputString.find("%2"); switch(inputString[pos+2]){ case '0': inputString.replace(pos,3," "); break; case '1': inputString.replace(pos,3,"!"); break; case '4': inputString.replace(pos,3,"$"); break; case '5': inputString.replace(pos,3,"%"); break; case '8': inputString.replace(pos,3,"("); break; case '9': inputString.replace(pos,3,")"); break; case 'a': inputString.replace(pos,3,"*"); break; default: return inputString.substr(0, pos+2).append(translator(inputString.erase(0, pos+2))); break; } return inputString.substr(0, pos+1).append(translator(inputString.erase(0, pos+1))); } } int main(int argc, const char * argv[]){ int C=0; cin>> C; cin.ignore(); string *inputString = new string[C]; for(int i=0; i<C; i++){ cin>> inputString[i]; cin.ignore(); } for(int i=0; i<C; i++){ cout<<translator(inputString[i])<<endl; } delete[] inputString; return 0; } 7년 전
3개의 댓글이 있습니다. cosics %2520을 입력하면 %20이 파싱되겠죠? 그럼 %20은 다시 " "로 파싱됩니다. 실제 원하는 출력은 %20이 되어야 하는데, 원치 않게 두 번 파싱이 되는 경우가 아닐까요? 그래서 맨 마지막에 '%' 문자를 파싱하면 될 것 같습니다. 통신 프로토콜 파싱에서도 Byte Stuffing이라는 게 있는데.. 비슷한 원리죠^^ 7년 전 link Corea inputString.substr과 inputString.erase를 두 문장으로 분리해보세요. 7년 전 link show1296 @Corea 도움이 되었습니다. 감사합니다! 7년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
show1296
URI 문제 재질문합니다! 여전히 안되네요 ㅠㅠ 부탁드립니다.
7년 전