colours
은 std::map<string, string>
입니다. 각 쌍의 첫 번째 요소는 2 글자 std::string
색 코드이고, 두 번째 요소는 7 색 std::string
셸 이스케이프 코드입니다.왜이 문자열은 segfault를 검색하고 바꿉니 까?
size_t i;
for(map<string, string>::iterator iter = colours.begin(); iter != colours.end(); iter++) {
while((i = text.find(iter->first)) != string::npos) {
text.replace(i, i + sizeof(iter->first), iter->second);
}
}
이 코드를 실행하면 프로그램이 segfaults됩니다. 내 최선의 추측은 대체 문자열의 길이가 대체 할 문자열의 길이보다 길지만 무언가가 char *
이 아닌 std::string
인 segfaults 만 발생할 수 있다고 알고 있습니다.
감사합니다. 제안한 변경 사항을 적용했지만이 코드 블록에서는 여전히 프로그램이 segfaults입니다. –
@Not Joe Bloggs, 음. 디버거에서 실행하여 정확히 어떤 조건으로 인해 segfault가 발생하는지 확인하십시오. – luqui
@Not Joe Bloggs 세그 폴트가 발생하는 입력을 제공 할 수 있습니까? – marcog