문장이 포함 된 문자열이 있습니다. 그 문자열에서 특정 단어를 검색하고 바꿔야합니다. 필자의 경우에는 선의 벡터와 대체 할 단어의 벡터가 있습니다.공백을 건너 뛰지 않고 문자열의 단어 바꾸기
void Generator::generate_file(const string& fileName){
string inBuffer, outBuffer;
std::stringstream ss;
std::ofstream outFile;
outFile.open(fileName);
for (const auto& inIT : userCode){
//userCode is a vector which contains lines of text
ss.str(inIT);
ss.clear();
outBuffer = "";
while (ss >> inBuffer){
for (auto keyIT : keywords){
//keywords is a vector which contains words to replace
if (keyIT == inBuffer)
inBuffer = "REPLACED";
}
outBuffer += inBuffer + " ";
}
outFile << outBuffer << endl;
}
outFile.close();
}
이 기능의 문제가 모든 공백을 건너 뛰고 있다는 것입니다 : 다음은 마지막 텍스트 파일을 생성 내 기능입니다. 출력 파일에 필요합니다. 그것을 성취하기 위해 무엇을해야합니까? 그것은 다음과 같습니다 내 기능을 실행 한 후
class UrlEncoder(object):
def __init__(self, alphabet=DEFAULT_ALPHABET, block_size=DEFAULT_BLOCK_SIZE):
다음 userCode 벡터를 표시
userCode[0] = "class UrlEncoder(object): class";
userCode[1] = " def __init__(self, alphabet=DEFAULT_ALPHABET,\n block_size=DEFAULT_BLOCK_SIZE):";
:
userCode : 아래에서 어떻게 작동하는지의 예를 볼 수 있습니다 :
REPLACED UrlEncoder(object):
REPLACED __init__(self, alphabet=DEFAULT_ALPHABET, block_size=DEFAULT_BLOCK_SIZE):
잘 보시다시피 키워드를 바꿀 수 있습니다. 그러나 불행히도 그것은 tabulator를 건너 뛰었습니다.
당신이 무슨 뜻 이죠, "모든 공백을 건너을?" –
@j_random_hacker 내 질문을 편집하고 예제를 추가했습니다. 지금은 더 분명해지기를 바랍니다. –