我试图在 C++ 程序中采用一个简单的命令行参数来触发不同的程序行为——当你包含一个“y”(或任何以 y 开头的字符串——我不在乎)时,程序会显示一些中间结果.
当我和
ccal pix.txt
一切正常。
当我使用
ccal pix.txt 是的
它运行正常,显示我的像素并在最后崩溃。
还,
ccal pix.txt 没有
在不显示 pix 的情况下运行一切正常(就像它应该的那样),最后仍然崩溃。
这是相关代码-我做错了什么?
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 中的测试切换为以下内容:
if(argv[2][0] == 'y')
我仍然得到相同的行为。我无法为我的生活找出原因。