c++字符串附加格式化数据
C++ string append formatted data
我已经在c++中创建了我自己的字符串类(由于某些原因我不想使用第三方库或std::string)
现在我有一个附加到我自己的格式化字符串的问题。我创建了这个函数:
void MyStringAnsi::AppendFormat(const char * str, ...)
{
va_list vl;
va_start(vl, str);
int newLength = static_cast<int>(this->length + 10 * strlen(str));
this->ResizeBuffer(this->length + newLength);
vsnprintf_s(this->str + this->length, newLength, newLength, str, vl);
va_end(vl);
this->length = static_cast<int>(strlen(this->str));
this->str[this->length] = ' ';
this->hashCode = UINT32_MAX;
}
问题是附加字符串的newLength
。我不能计算它,所以我设置了一些"神奇"的乘数,但这是不够的。
这个问题是否可以解决(迭代所有变量或将其更改为其他内容)?我可以使用c++ 11的特性,所以也许有什么?
我用 调用我的代码MyStringAnsi str = "xy";
str.AppendFormat("%s AND %d", someLongString, -50.7);
对于gcc,您可以使用vsnprintf
的返回值来确定所需的大小。
对于msvc,您必须增加大小,直到vsnprintf
不返回-1。
相关文章:
- 格式化返回字符串C++
- 利用输入文件中的数据(字符串和int)并在循环中利用
- C++ ctime() 迄今为止格式化的字符串?
- 如何用 c++ 读取 txt 文件,如果我们不知道其中有多少个数据字符串,以及每行有多长?
- snprintf等效于WCHAR_T计算格式化的字符串大小(MAC)
- 用C++读取带多个分隔符的格式化数据
- 使用c++只读取已格式化和未格式化数据的文件中的已格式化数据
- 将数据(字符串或整数)添加到 char 数组
- 在窗口上将格式化的 C 字符串和参数转换为 wstring
- 我可以告诉解决方案如何使用 C 写入此格式化数据
- 从文本文件到实际十六进制的文本十六进制数据字符串
- 如何将流数据(字符串)解析为不同的数据文件
- 将格式化数据转换为结构的方便方法
- 当绕过c++中的函数从目标进程的ExtTextOut复制数据字符串时,malloc会导致崩溃吗?
- 比较包含格式化数据的字符串
- 在标准输出上格式化矢量字符串
- 在c++中读取格式化数据的最简单/最清晰的方法
- Stringstream将unsigned long转换为带逗号的格式化数字字符串
- 如何将数据(字符串、整数或枚举成员)与Gtk::ComboBoxText项关联?
- c++字符串附加格式化数据