是否存在会导致我出现问题的具体情况?因为我有一个错误,我很确定是因为这个
#define customStringDataType extern string
char buffer[2024];
customStringDataType DATA;
sprintf(buffer, "Some cool information");
DATA = DATA + buffer;
编辑:对不起,我想说除此之外。我知道缓冲区溢出。因为我可以设置一个大的char缓冲区比它中的信息长得多,而且我还有问题
答案 0 :(得分:1)
是否存在会导致我出现问题的具体情况?
如果复制到buffer
的字符串的长度等于或大于1024
,则会出现问题。
您可以使用snprintf
来防止缓冲区溢出。
sprintf(buffer, sizeof(buffer), "Some cool information");
目前尚不清楚为什么首先使用sprintf
。如果"Some cool information"
应该包含格式化指令,并且在sprintf
的调用中有更多参数,那么您正在尝试的是有意义的。如果sprintf
没有其他参数,您只需使用:
DATA += "Some cool information";
使用std::ostringstream
可以避免缓冲区大小限制问题。
std::ostringstream ostr;
ostr << "Some cool information" << and other arguments as needed;
DATA += ostr.str();