c++ - 确定系统制表位长度

标签 c++ c file

我的问题: 我正在尝试处理文件的内容以查找错误,就像编译器一样(从技术上讲,我正在制作一个编译器,但这是一个次要的细节)。我需要知道给定系统或平台上制表位的长度,以便正确计算字符列。然而,我所看过的所有地方都没有给我一种获取系统制表位长度的方法。我怎样才能得到它,这是否可能,或者它在每个系统上都是 8?

我不想假设制表位是每 8 个字符,因为这似乎对于每个系统都是不同的,而且它甚至在大多数系统上都是可配置的。而且我知道编辑器通常会定义制表位的长度,但编译器不会也不能使用编辑器来确定制表符的长度。那么...我到底该怎么办?

编辑: 因此,如果没有简单或实际可靠的方法来判断选项卡的长度(除了任意猜测),是否有一种直观的方法来确定此长度,以便它在 50% 或更多的时间里是准确的?

最佳答案

在我看来,您应该 (a) 假设制表位是每 8 个空格,并且 (b) 甚至不要浪费任何时间来使其可配置。

是的,有些人喜欢缩进不是 8 个空格的倍数。是的,有些文本编辑器可以让您将制表位设置为 8 个空格以外的位置。但是(同样在我看来),这些事实都没有改变对 \t 字符的解释。如果有人想要缩进 18 个空格,他们(和/或他们的文本编辑器)可以通过插入 18 个空格或两个制表符和两个空格(或者甚至可能是一个制表符和 10 个空格)来实现。但他们不应该去插入两个制表符,并声明它们是 9 个空格的制表符或其他东西。

因此,如果您编写的代码采用 8 个空格制表符,并且如果有人认为他们已经“重新配置”\t,但发现您的代码没有(也不能)共享这种信念,也许——只是也许——你会帮助说服那个人相信他们的信念是愚蠢的。 (当然,这无济于事。但我们总能抱有希望。)

(但是,是的,这是一场古老而华丽的辩论,可能永远不会得到令人满意的解决。)

关于c++ - 确定系统制表位长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53490769/

相关文章:

c++ - 关于简单游戏中人工智能的想法(例如 : Tic Tac Toe) C++

c - 如何找到地址空间中的漏洞?

c - 如何在字符串中添加空终止符?

python - 如何在Python中使用左对齐文本写入.txt文件?

c++ - 你能解释一下这个 C++ 删除问题吗?

c++ - 在不调整内容大小的情况下调整 GLUT 窗口的大小?

C++ 线程/进程标识符

c - 多管道实现在 C 中不起作用

java - Math.random 和 FileReader

linux - 如何在 Linux 中比较两个大文件?