C++中与Lua相对应的setw?

我正在尝试以表格的形式打印信息,其中间距永不改变,有点像c++的setw

点赞
用户4567755
用户4567755

你可以使用 string.format()。格式化的参考与 ISO C 中的 sprintf()printf() 相同。您可以通过使用例如 这个网站 进行快速参考。

print(string.format("%10d%10d%10d", 114, 523, 15224))

将会得到:

       114       523     15224

基本上,你可以这样做(对于整数):

function printTable(t, length)
    for _,row in pairs(t) do
        local format = ""
        for i=1,#row do format = format .. "%" .. length .. "d" end
        print(string.format(format, table.unpack(row)))
    end
end

它不是最有效率的方法,但它可以完成工作:

> S = {{432, 324, 5325, 4356}, {4325, 5643, 223, 543}, {234, 1, 23, 656}}
> printTable(S, 8)
     432     324    5325    4356
    4325    5643     223     543
     234       1      23     656
2016-09-04 17:33:42