预付费和添加到CSTRING
preprending and appending to a cstring
我有以下字符串tok_str,就像" default.png",我也想预先重新汇总char'并附加char'。
这就是我所做的,但是炭是在错误的地方附加和添加的
char *tok_str = const_cast<char*>(mReader->getAttributeValue(pAttrIdx));
char * mod_tok = new char[tok_str_len+2];
mod_tok[0] = ''';
size_t len = strlen(tok_str);
size_t i;
memmove(mod_tok + len, mod_tok, strlen(mod_tok) + 1);
for (i = 0; i < len; ++i)
{
mod_tok[i] = tok_str[i];
}
char *dup;
char *cstr="'";
sprintf(mod_tok,"%s%s",cstr,(dup=strdup(mod_tok)));
free(dup);
如果要继续使用null-termented byte字符串,您需要考虑一些事情。
第一个当然是 null-terminated part。一串X字符需要X 1的空间才能包括终端。
第二个是您所需要的实际上是一个sprintf
(或更好的snprintf
(调用(一旦分配了内存(:
char* mod_tok = new char[strlen(tok_str) + 3]; // +2 for the extra characters, +1 for terminator
snprintf(mod_tok, strlen(tok_str) + 3, "'%s'", tok_str);
就是这样,现在您在原始字符串的前面和末尾添加了单个引号。
有几件事需要改进:
- 在可能的情况下使用const
- len vs tok_str_len,仅使用一个。
- 中间完成的MEMMOVE似乎对最终结果没有影响
- 请注意for循环中的索引
- 请注意,strlen不算零终端
- 如果您的代码开始将新/删除与免费重构混合使用
这是我的建议:
//keep it const and protect your data
const char *tok_str = mReader->getAttributeValue(pAttrIdx);
//retrive the len once for all (const, no one is supposed to change it)
const size_t len = strlen(tok_str);
char * mod_tok = new char[len+3]; // 2 "'" + ' '
mod_tok[0] = ''';
for (size_t i = 0; i < len; ++i)
{
mod_tok[i+1] =tok_str[i];
}
mod_tok[len+1] = ''';
mod_tok[len+2] = ' ';
//done.
//later...
delete[] mod_tok;
享受您的编码!StefanoPS:不过,我同意使用STD :: String的使用。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 预付费和添加到CSTRING
- C++ "cannot add two pointers" ,将硬编码字符串添加到 CString
- C++ 将字节值作为 int 添加到 CString
- 是否有任何方法来添加一个对象以外的CString到CComboBox在MFC
- 如何在c++中添加cstring的元素