如何截断前几个字符字符数组 C++
how to truncate first few characters char array c++
我有一个名为names[50]
的char array
基本上,我使用
strncpy(this->names, names, sizeof(names))
但是,这只会截断末尾的字符。
如何从一开始就截断字符?
例如,BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge
应该是teveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge
如果我理解正确,那么使用您显示的字符串作为示例,您必须编写
strncpy( this->names, names + 5, sizeof(names) - 5 );
您可以更改 strncpy 的源地址:
strncpy(this->names, &(names[10]), num_of_chars_to_copy);
请注意,如果源字符串的长度超过 num,则不会在目标字符串的末尾隐式追加空字符。
你需要清楚你想做什么... names[] 的长度从调用到调用是可变的吗?这个>名称是固定长度吗?请注意,要复制的字节数的长度应该是此名称中可用的字节数>...否则,您将面临内存溢出的风险。
我为您设计了这个简单的函数,您可以将其用作更复杂的问题的参考代码:
void BackStrCopy(char* src, char* dest, int srcsize, int destsize)
{
if(srcsize >= destsize )
{
do
dest[destsize--] = src[srcsize--];
while( destsize + 1 );
}
}
int main()
{
char* src = "BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge";
char dest[50];
BackStrCopy(src, dest, strlen(src), 25);
}
我测试了它最终工作。
我认为函数代码不需要任何注释:)如果我的解决方案对您有帮助,请记得检查答案。
再见
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何返回或护理项目清单基于几个类别
- 我们如何在文本文件中找到C++中的几个单词?
- 关于 std::bitset 构造函数的几个问题?
- 几个 Nt 函数在 Windows 7 x32 上返回STATUS_WAIT_0
- std::stoi 只转换前几个字符
- CIN 会丢失每行的前几个字符
- 字符串的串联正在替换前几个字符
- "std::isdigit"正在崩溃几个扩展的 ASCII 字符
- 从 asio::async_write 接收到几个字符
- 如何从标准::字符串中获取几个字符
- 给定一个字符串,如何检查前几个字符 == 另一个字符串?C++
- 如何截断前几个字符字符数组 C++
- 只选择字符串C++中的前几个字符
- 如何在c++中将几个bacis字符组合成一个字符串
- 我的字符数组只显示最后几个字符.c++
- 在c++中,如何从字符串中获取后面的几个字符?
- 从字符串末尾删除几个字符的更有效的方法
- 将几个不同的字符连接成一个字符串