一个 回车 符号 引发的 疑云

Linux平台上
使用 opencv 的putext 在图像上输出 某个标签文本时,末尾有个问号,很奇怪,排查代码,并没有输出 问号
使用 控制台 单独输出 标签文本,一切正常,

但另一个函数 先输出其他内容, 再 输出 标签文本后,
那么 标签文本 和 前面的输出 都没有出现 在 控制台中,

代码中 标签文本的后续 输出 能显示在 控制台中。。。

想到 标签文本是从一个文本文件解析来的,并且 这个 文本文件是 在windows 上生成的,
那么 ,直接想到 是 两个系统 换行符 不同导致的

使用 cat -A labels.txt 可以看到 每行的末尾为:^M$

使用 dos2unix 直接将 该 文本文件换行符 转换为 unix 风格,问题解决!

原因: windows上 换行符使用了 回车 和 换行两个字符。
回车的含义为 输出位置 跳转到 行首, 所以 之前的输出都被后续的掩盖掉了。。。
opencv 的putext 碰到这个 不可见字符,直接输出为 问号

背景知识:
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号

猜你喜欢

转载自blog.csdn.net/haithink/article/details/88932463