字符串处理基础函数

142 阅读1分钟

交换数组中的元素

C语言版

void swap(int* a, int* b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}
typedef struct {
    ...
} Element;
void swap(Element* a, Element* b)
{
    Element tmp;
    memcpy(&tmp, a, sizeof(Element));
    memcpy(a, b, sizeof(Element));
    memcpy(b, &tmp, sizeof(Element));
}

缺点是没有通用性

C++版

template <class T>
void swap(T& a, T& b)
{
  T c(a);
  a = b;
  b = c;
}

C++语言可以写类的拷贝函数,就不必使用内存拷贝了。

反转字符串

void reverseStr(char* str, int strLen)
{
    for(int i = 0; i < strLen / 2; i++) {
        swap(str + i, str + strLen - 1 - i);
    }
}