作者blackcity (超黑城市)
看板C_and_CPP
标题[问题] Call function return padding string
时间Thu Mar 28 10:21:03 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC Eclipse
问题(Question):
1. string AddPadding(int PadLen, string Str)
{
char buff[100];
snprintf(buff, 100, " %*s", PadLen, Str.c_str());
return buff;
}
2. string AddPadding(int PadLen, string Str, char* buff)
{
snprintf(buff, 100, " %*s", PadLen, Str.c_str());
return buff;
}
3. string AddPadding(int PadLen, string Str, char* buff)
{
int PadCount = PadLen - Str.length() + 1;
for (int Index = 0; Index < PadCount; Index++)
{
buff[Index] = ' ';
}
strcpy(buff + PadCount, Str.c_str());
return buff;
}
Note: (2)(3)外部宣告char buff[100];
想请问一下,第一种写法是可行的吗?
还是会有机会造成buff的空间释放後资料错误?
第二种和第三种写法应该是结果相同且能保证回传的资料没问题吧...
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.229.118
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1553739666.A.F46.html
1F:→ bluesoul: 回传时已经变成string object了 03/28 10:24
2F:→ blackcity: 所以三种写法都是可行的,感谢^^ 03/28 10:26
3F:→ MOONRAKER: 已经是string转成c_str来pad再转string 03/30 11:15
4F:→ MOONRAKER: 绕一大圈 画蛇添足 03/30 11:15