我想在一個簡單的命令行參數在C++程序中觸發不同的程序行爲 - 當你包含一個「Y」(或任何字符串以Y開頭 - 我不真的很在意)程序顯示一些中間結果。
當我有趣的字符串比較崩潰
CCAL pix.txt運行
一切工作正常。
當我使用
CCAL pix.txt是
它運行正常,說明我的PIX和崩潰在最後。
此外,
CCAL pix.txt沒有
運行的一切,而不顯示PIX OK(像它應該),以及仍然崩潰在最後。
下面是相關的代碼 - 我做錯了什麼?
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')
我仍然得到同樣的行爲。我不能爲了我的生活找出原因。
該問題可能在代碼中的其他地方;請構建一個[最小測試用例](http://sscce.org)。 –
到目前爲止,沒有看起來越野車。我們可能需要更多的代碼。 – 2013-01-12 20:21:11
您可以使用調試器來查明崩潰的真實位置。 –