다른 프로그램 동작을 트리거하는 C++ 프로그램의 간단한 명령 줄 인수를 사용하려고합니다. "y"(또는 y로 시작하는 문자열 - 포함하지 않을 때 - 나는 포함하지 않습니다. 정말로주의) 프로그램은 몇 가지 중간 결과를 표시합니다.
내가C++ : 재밌는 문자열 비교 충돌
ccal의 pix.txt 실행
모든 것이 잘 작동합니다.
내가 맨 끝에
ccal pix.txt
그것은 확인을 실행 예, 보여줍니다 내 PIX와 충돌을 사용하는 경우. 또한
는ccal pix.txt 더
는 맨 끝에 충돌 여전히 (그것이해야처럼) PIX를 표시하지 않고 OK 모든 것을 실행하지 않으며,.
다음은 관련 코드입니다. 내가 뭘 잘못하고 있니?
if(argv[2][0] == 'y')
나는 여전히 같은 동작을 얻을 :
void dumpFloatMatrix(Mat m){
for(int i = 0; i < m.cols; i++){
for(int j = 0; j < m.rows; j++){
char *buff = new char[10];
sprintf(buff, "%5.1f ", m.at<float>(i,j));
cout << buff;
delete buff;
}
cout << endl;
}
}
int main(int argc, char *argv[]){
char* outFile;
bool showPix = false;
// Take in command line args
switch(argc){
case 3:
if(strncmp(argv[2], "y", 1) == 0)
showPix = true;
outFile = argv[1];
break;
case 2:
outFile = argv[1];
break;
default:
cout << "Usage: ccal INPUT_LIST_FILE" << endl;
return -1;
}
Mat cameraMatrix(3, 3, CV_32FC1);
dumpFloatMatrix(cameraMatrix);
return 0;
}
이상한 것은 내가 이런 식으로 경우 3에서 테스트를 전환 할 때도 있다는 것입니다. 나는 왜 내 인생에 대해 생각할 수 없다.
문제는 아마도 코드의 다른 부분에있을 수 있습니다. [최소 테스트 케이스] (http://sscce.org)를 작성하십시오. –
지금까지 아무 것도 버그가 없다. 우리는 더 많은 코드가 필요할 것이다. –
디버거를 사용하여 충돌이 실제로 어디인지 확인할 수 있습니다. –