좋아, C++의 숙제 프로젝트에서 작업 중이므로 문제가 발생하여이를 해결할 수없는 것 같습니다. 이 함수는 사용자 정의 분리 문자로 입력 문자열을 분할하고 나중에 액세스 할 벡터에 하위 문자열을 저장합니다. 나는 기본 파서를 알아 냈다고 생각하지만, 입력의 마지막 부분을 분할하고 싶지는 않습니다.C++ 문자열 구문 분석기 문제
int main() {
string input = "comma-delim-delim&delim-delim";
vector<string> result;
vector<char> delims;
delims.push_back('-');
delims.push_back('&');
int begin = 0;
for (int i = begin; i < input.length(); i++){
for(int j = 0; j < delims.size(); j++){
if(input.at(i) == delims.at(j)){
//Compares chars in delim vector to current char in string, and
//creates a substring from the beginning to the current position
//minus 1, to account for the current char being a delimiter.
string subString = input.substr(begin, (i - begin));
result.push_back(subString);
begin = i + 1;
}
위의 코드는 마지막 대시까지 입력 코드를 분할 할 때 잘 작동합니다. 이후에는 다른 구분 기호로 실행되지 않으므로 하위 문자열로 저장되지 않고 결과 벡터로 푸시됩니다.
else if(input.at(i) == input.at(input.length())){
string subString = input.substr(begin, (input.length() - begin));
result.push_back(subString);
}
그러나, 위 부분과 경계 부족 오류가 점점 계속 : 문제를 해결하기위한 시도 그래서, 나는 다음과 함께 넣어. 하위 문자열을 분할 할 때 경계에 문제가있는 것으로 보이며이를 해결하는 방법을 알 수 없습니다. 어떤 도움이 필요합니까?
마지막 분할이 발생한 지점을 저장하는 것이 좋습니다. 루프 끝에서 해당 값이 문자열의 끝이 아닌 경우 마지막 분할 t 이후의 모든 것을 밀어 넣으십시오. o 귀하의 결과. 당신이 지금 무엇을 가지고 있는지는 다소 의심 스럽습니다. 왜냐하면 그것은 바운드 문제와는 별도로 마지막 짝짓기와 동일한 숯을 고려하기 때문입니다. –
승무원 추가를 시도해 보셨습니까? 문자열에 구분 기호를 추가하십시오. –
두 개의 구분 기호'-'와'&'를 사용하고 싶습니까? – Raindrop7