내 코드에 대해 "문자열을 역 참조 할 수 없음"오류가 발생합니다.이 오류는 인터넷 어딘가에서 그대로 복사됩니다. 응용 프로그램은 완벽하게 릴리스 모드 (VS 2010)에서 컴파일되지만 계속 디버그 모드에서 오류가 발생합니다. *에 문자열을 분할하고 각 단어를 벡터에 저장해야합니다. 누구든지 아이디어가 있습니까? 정말 비교 (string :: npos! = found) 부분을 좋아하지 않는 것 같습니다.C++ 토큰 화 해제 할 수없는 문자열
string newString = "Something*NotCool";
size_t found = newString.find_first_of("+*-/%()");
size_t lastPos = 0;
//while (found != newString.length)
while (string::npos != found || string::npos != lastPos)
{
if (found >= newString.length()) break;
if (found == lastPos)
{
lastPos = found+1;
found = newString.find_first_of("+*-/()", found+1);
}
string temp (newString,lastPos,found);
temp.assign(newString, lastPos, found-lastPos);
strings.push_back(temp);
lastPos = found+1;
found = newString.find_first_of("+*-/()", found + 1);
}
귀하의 도움에 감사드립니다 !!!
그것은 나 2010 VS를 사용하기위한 컴파일 (I는 CL이 아닌 IDE를 사용). 더 많은 코드를 보여줘야합니다. –
이것이 오류를 throw하는 코드입니까? 나는 이것이 오류 메시지를 피하기 위해 추가 된 코드를 가지고 있다고 의심하지만 대신에 마지막 단어가'strings'에 추가되지 않는 문제를 여전히 가지고 있습니다. 또한 컴파일러 오류와 런타임 오류의 구분에주의하십시오. 오류 메시지가 없어도 올바르게 실행된다는 말과 달리 '완벽하게 컴파일 된'오류 메시지는 매우 다릅니다. –
'if (found == lastPos) '로직이 꺼져 있다고 생각합니다. 이것은 행에 두 개의 *가 있는지 감지하고 무시하는 것입니다. 그러나 연속으로 3 개 이상 *이 잡히지는 않습니다. – Lalaland