C ++程序片段:这是做什么的?

时间:2010-10-28 21:16:29

标签: c++

我正在试图弄清楚如何使用Tesseract输出hOCR。文档是有限的,所以我正在研究代码。我在main()函数中找到了这个:

bool output_hocr = tessedit_create_hocr;
outfile = argv[2];
outfile += output_hocr ? ".html" : tessedit_create_boxfile ? ".box" : ".txt";

Tesseract的典型命令是:tesseract input.tif output_file.txt(在此示例中,输出文件将附加另一个.txt)。 main()的签名是int main(int argc, char **argv)

代码片段到底在做什么?

4 个答案:

答案 0 :(得分:4)

它正在生成输出文件名。

bool output_hocr = tessedit_create_hocr;

将tessedit_create_hocr标志保存在本地范围的变量中。

outfile = argv[2];

使用命令行中的基本文件名初始化outfile变量。像“Scann0000.tif”这样的东西。

outfile += output_hocr ? ".html" : tessedit_create_boxfile ? ".box" : ".txt";

根据标志添加适当的扩展名。可以重写为

if( ouput_hocr )
    outfile += ".html";
else if( tessedit_create_boxfile )
    outfile += ".box";
else
    outfile += ".txt";

答案 1 :(得分:0)

它从第二个命令行参数(在您的示例中为output_file.txt)中获取基本文件名,然后使用三元运算符选择扩展名。

如果output_hocr,“。html”

否则,如果tessedit_create,“。box”

否则,“。txt”

请注意,这是C ++。

答案 2 :(得分:0)

如果output_hocr变量为true,则会将“.html”附加到outfile

如果为false,则检查tessedit_create_boxfile是否为真,它会将“.box”附加到outfile,否则会附加“.txt”。

答案 3 :(得分:0)

这段代码只是根据tessedit_create_hocr的值决定给outfile提供什么文件扩展名(根据提供的代码片段,不清楚这个变量的初始化方式和位置)。

如果值为true,程序将命名输出文件“.html”。否则,它将是“.box”或“.txt”,具体取决于tessedit_create_boxfile的值(它也不清楚初始化的位置)。