在进行OCR的rec的时候,读取了一个本地文件表加载到一个std::vector<std::string> labelList
,然后循环把推理的结果转为为idx
,使用labelList[i]
获取当前字符的结果,再用一个外层的std::string resStr
进行连接得到最后的答案resStr += labelList[i]
。
这看起来没啥问题,但在打印resStr
的时候,只有一个结果里
(在循环中打印每一个labelList[i]
应该是2
,4
,.
,1
,公
,里
)。为啥本应该追加的字符串被覆盖了。
检查了半天才发现,是本地文件表的换行符的问题,本地文件表的换行符为CRLF,只要修改为LF即可解决问题。
- CR(CarriageReturn):代表回车,指回到一行的开头,对应
\r
,ASCII代码是13- LF(LineFeed):代表换行,指另起一行,对应字符
\n
,ASCII代码是10
在Windows中,使用CRLF来结束一行即\r\n
,所以我们平时编写文件的回车符应该确切来说叫做回车换行符。而在Mac和Linux系统,只使用LF来结束一行,即\n
。