2016-11-03 2 views
-9

POSIX 시스템에서 파일 경로를 나타내는 문자열에서 '..'가 있는지 검색하려고합니다. 나는 std :: string.find ("..")를 사용하고 있으며 올바른 인덱스를 찾는 것처럼 보이지만 부울 식에서 올바르게 평가하지는 않습니다. 내가 어떻게 완성하는지 제안 해주세요.내 코드에 버그가 있습니다. tell me please

#include <string> 
#include <stdio.h> 

int main(int argc, char *argv[]) { 
    std::string a = "abcd"; 

    int apos = a.find(".."); 

    bool test1 = a.find("..") >= 0; 
    bool test2 = apos >= 0; 

    if (test1) { 
     printf("TEST1 FAILED: %ld >= 0!\n", a.find("..")); 
    } 
    if (test2) { 
     printf("TEST2 FAILED %d >= 0!\n", apos); 
    } 
} 
+3

이유 때문에 디버거가 있습니다. 사용하십시오. –

+0

경고 : "경고 : 부호없는 표현식> = 0은 항상 참"입니다. – tadman

답변

2

0 대 0이 아니라 std::string::npos에 대한 테스트의 문제는 아닙니다. find의 설명서를 확인하십시오.

bool found = a.find('..') != std::string::npos; 
관련 문제