【发布时间】:2016-11-07 16:37:17
【问题描述】:
我在 Lua 中有这个功能:
Len = function(msg, length, dir)
if not msg or not length then
return "Unknown";
end
local msgC = msg:gsub("$%d", "");
if (dir == "l") then
return string.rep(" ", length - #msgC)..msg;
else
return msg..string.rep(" ", length - #msgC);
end
end
它在指定方向填充一个字符串,从而产生一个与指定字符数右对齐或左对齐的字符串(主要用于格式化列表)。
我尝试在 C++ 中复制上述函数:
std::string Len(string msg, int charCount, string dir)
{
int spacesRequired = (charCount-msg.length()/2);
std::ostringstream pStream;
if (dir == "l")
pStream << std::string(spacesRequired, ' ') << msg;
else
pStream << msg << std::string(spacesRequired, ' ');
return pStream.str();
}
...不能正常工作:
我还使用一个函数在打印整个字符串之前使其居中,但这在这里无关紧要,因为问题在于 Len C++ 函数。
我在这里做错了什么,我该如何纠正?
我认为问题在于我对 local msgC = msg:gsub("$%d", ""); 的误解(据我了解,这可能是不正确的)检索字符串的长度。这导致int spacesRequired = (charCount-msg.length()/2); 与length - #msgC 的作用相同。
【问题讨论】: