如何截断前几个字符字符数组 C++

how to truncate first few characters char array c++

本文关键字:字符 几个 数组 C++ 何截断      更新时间:2023-10-16

我有一个名为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);
}

我测试了它最终工作。

我认为函数代码不需要任何注释:)如果我的解决方案对您有帮助,请记得检查答案。

再见