Kri*_*ato 2 c++ string command-line
下面的代码似乎以不同的方式解释传递的文件名中的斜杠,具体取决于它是作为命令行参数传递,还是通过文字硬编码.如果图像文件名C:\kimba.jpg作为命令行参数传入,它可以正常工作:
int main( int argc, char** argv )
{
IplImage* img = cvLoadImage(argv[1]);
//IplImage* img = cvLoadImage("C:\kimba.jpg", 1);
// ...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我取消注释第二行并注释第一行,则相同的文件名会在该行中引发异常.我不知道如何cvLoadImage()实现,但似乎(根据调试器)在两种情况下都将相同的内容传递给函数.那么为什么硬编码的文件名导致异常而不是命令行参数呢?
你需要用反斜杠来逃避反斜杠:
IplImage* img = cvLoadImage("C:\\kimba.jpg", 1);
Run Code Online (Sandbox Code Playgroud)