如何检测文本文件中的选项卡?

Aqu*_*irl 5 c c++ file-io

检测标签与检测空格相同吗?即,为了检测空间,我只是将空格字符与其ascii数字进行比较.

对于标签,我是否必须在文件中搜索"\ t"字符,还是有其他方法?

Yew*_*ong 5

if('\t' == myChar)
Run Code Online (Sandbox Code Playgroud)

这可行,并且比检查9更好,因为9可能不是所有体系结构中的保证值.

  • @Nick,EBCDIC使用5作为选项卡而不是9 - 是的,我知道这些野兽并不是_many,但它们几乎涉及到在地球上移动的每一块钱:-) (4认同)
  • 是的,我没有(感谢@paxdiablo)肯定知道,但那不是重点; 没有理由使用`if(9 == myChar)`因为它的可读性较差,因为它具有神奇的数字而且不太便携. (3认同)
  • @Nick,是的.大型机野兽有IBM编译器,我认为即使gcc也有一个端口(这是EBCDIC z/OS UNIX系统服务,而不是ASCII zLinux的东西). (2认同)

Dav*_*son 3

假设您正在使用 ASCII 数据,您只需在文本文件中搜索值为“\t”(9) 的字节即可。制表符在文本文件中表示为单个字节,大多数用于读取文件的库不会对这些字节执行任何特殊操作。

  • @Nick,请参阅我对 Yew 答案的评论。ISO C 不强制要求将 ASCII 作为编码方案。然而,话虽如此,这个答案唯一需要改变的是“9”——其他一切仍然是正确的。EBCDIC 还有一个奇妙的特性,即“AZ”不连续,这意味着“if ((ch >= 'A') && (ch <= 'Z')) ...”不是那么可移植,因此诸如“isalpha”之类的东西` 等人。 (3认同)
  • 是的,ISO 仅要求提供的字符以及“0”到“9”字符的连续性 (?)。 (2认同)