比较stringC ++末尾的字符

这个程序应该find在Unix上input的以“.exe”结尾的命令行参数。 由于某种原因,它不起作用。 这里是代码:

int main( int argc, char* argv[] ) { for ( int i = 1; i < argc; i++) if( findExe( argv[i] ) ) cout << argv[i] << endl; return 0; } bool findExe( char* argument ) { if ( strlen( argument ) >= 4 ) { string testExe = ".exe"; string initialWord=argument; //converts c-string to string string temp( initialWord,( initialWord.size() - 4 ),4 );//creates temp with last four characters from initialWord if ( !temp.compare(testExe) ) return true; } else return false; } 

删除else ,我想(虽然我没有编译代码来检查)。 在长度至少为4的情况下,但字符串比较返回非零值时,可以在不返回的情况下到达函数的末尾。 你的编译器应该警告你:打开更多的警告。

你的findExe函数有一个不返回结果的分支….就像史蒂夫说的,编译器应该警告你。

这个怎么样?

 bool findExe( char* argument ) { int n = strlen(argument); if (n < 4) return false; char* ext = argument[n-4]; if (strcmp(ext, ".exe") == 0) return true; return false; }