我有一个这样的文本文件:
0. ----.----1----.----2----.----3----.----4
1. |Hello1
2. | Hello2
3. | Hello3
4. |Hello4 Hello5
5. | Hello6
6. | Hello7 Hello8
我想在任何其他字符之前计算行开头的缩进。
这是我的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char const *argv[])
{
bool valid;
int index = 0;
int indent = 0;
string line;
ifstream file(argv[1]);
while (getline(file, line))
{
valid = true;
while (true)
{
if (index >= line.length())
{
break;
}
if (valid && line[index] == ' ')
{
indent++;
}
else if (valid && line[index] == '\t')
{
indent += 4;
}
else if (line[index] == 'H') //example for other characters
{
// do something with character
valid = false;
}
index++;
}
cout << indent << endl;
index = 0;
indent = 0;
}
file.close();
return 0;
}
输出:
0
4
8
0
20
8
现在效果很好。 但我知道有时制表符可能是 2 或 8 个空格。
如何知道文本文件中的一个制表符有多少空间?
我的建议是将空格和制表符的计数存储在单独的变量中,而不是尝试将制表符转换为空格。
需要注意的是,制表符和空格是不同的字符,这种认识可能是有利的。选项卡甚至可能根据某些编辑器中的前一行显示
在 Python 中,使用缩进来定义代码块,因此必须避免混合空格和制表符,即使它们在视觉上看起来大小相似。在缩进中组合空格和制表符必定会导致错误,即“缩进中制表符和空格的使用不一致。”
例如,此代码表示该错误。
def nothing():
print("Nothing") # 4 spaces
print("Nothing") # 1 tab
这个也一样。
def nothing():
print("Nothing") # 1 space 1 tab 1 space
print("Nothing") # 1 space 1 tab 1 space