string的问题

zzghost 2004-04-23 01:02:15
void VarArg( const std::string& formatstring, ...)
{
int nSize = 0;
char buff[255];
va_list args;
va_start(args, formatstring);

nSize = _vsnprintf( buff, sizeof(buff), formatstring.c_str(), args);
std::cout<< buff << std::endl;
}
int main()
{
VarArg( "%s","hello");
return 0;
}
上面的程序在编译过程中会出现中断,不能通过编译,
但把函数参数类型const string& 改为const char*
则能通过编译。
为什么呢?想不通,string不是可以转化为const char* 吗?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sftk 2004-04-23
  • 打赏
  • 举报
回复
你载入头文件<string>了吗???????
zzghost 2004-04-23
  • 打赏
  • 举报
回复
如果一定要用const string& 有没有办法呢?
fibbery 2004-04-23
  • 打赏
  • 举报
回复
★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★○○○★★★★★★★★★★★★★★★★★
★★★★★○○○★★★★★★★★★★★○○○★★★
★★★★★○○○★★★★○○○○○○○○○○★★★
★★★★★○○★★★★★★★★★★★○○○★★★★
★★★★★○○★★○○★★★★★★★○○★★★★★
★○○○○○○○○○○○★★★★★○○★★★★★★
★★★★○○○★★○○★★★★★○○★★★★★★★
★★★★○○★★★○○★★★★★○○★★★★★★★
★★★★○○★★○○○★★★★★○○★★★★★★★
★★★★○○★★○○★★★★★★○○★★★○○★★
★★★★○○★★○○○○○○○○○○○○○○○○★
★★★○○★★★○○★★★★★★○○★★★★★★★
★★★○○★★○○○★★★★★★○○★★★★★★★
★★★○○★★○○★★★★★★★○○★★★★★★★
★★★○○○★○○★★★★★★★○○★★★★★★★
★★★★★○○○○★★★★★★★○○★★★★★★★
★★★★★★○○○○○★★★★★○○★★★★★★★
★★★★★○○★★○○○★★★★○○★★★★★★★
★★★★○○★★★★○○★★★★○○★★★★★★★
★★★○○★★★★★★★★○○○○○★★★★★★★
★○○○★★★★★★★★★★○○○★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★
imxww 2004-04-23
  • 打赏
  • 举报
回复
原因是va_start只能接受普通参数,
va_start(args, formatstring);
宏展开后是:
args = (va_list)&formatstring + ( (sizeof(formatstring) + sizeof(int) - 1) & ~(sizeof(int) - 1) ) ;

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧