2016-11-03 3 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は常にtrueです。 – tadman

答えて

2

これは0のテストの問題ではなく、std::string::nposのテストの問題ではありません。 findのドキュメントを参照してください:

bool found = a.find('..') != std::string::npos; 
関連する問題