c++标准库中的问题
std::string a("ssss");
std::string *aa = &a;
unsigned int b = rand();//得到一个随机数
std::string sH;
sprintf_s((char*)(sH.c_str()), sH.capacity(), "%u", b);
*aa += sH;//为什么这里没办法把sH的内容添加到aa所指向内容之后呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
为什么我这capacity是15,这个函数号称对缓冲区的大小做了比较安全的处理
而且而且sprintf_s返回后sH的值也是正确的,就是无法添加到*aa的尾端
我用得g++, string没赋值之前是capacity是0
因为 sH.capacity()=0 所以你得sprintf_s执行之后 sH仍然是空得。不过sprintf_s这函数我真没见过,难道是近几年新出道的函数? 还是snprintf换了个马甲。
是哦,话说那我该怎么写呢
回复
将string sH 改为 char sH[256];