C++交换字符串

csh*_*per 1 c++

我正在尝试创建一个非递归方法来交换c风格的字符串.它在Swap方法中抛出异常.无法弄清楚问题.

void Swap(char *a, char* b)
{
    char temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
void Reverse_String(char * str, int length)
{
    for(int i=0 ; i <= length/2; i++)  //do till the middle
    {
        Swap(str+i, str+length - i);

    }

}
Run Code Online (Sandbox Code Playgroud)

编辑:我知道有更好的方法来做到这一点.但是因为我正在学习,想知道代码的问题.

And*_*ron 7

它在Swap方法中抛出异常.无法弄清楚问题.

不,不.创建临时字符并分配字符不可能抛出异常.但是,如果您的指针未指向您拥有的内存块,则可能存在访问冲突.

Reverse_String()函数看起来没问题,假设str指向至少length可写内存的字节.你的问题没有足够的背景来推断过去.我怀疑你传递的是无效参数.您需要说明您如何呼叫Reverse_String()我们以确定呼叫是否有效.

如果你写的是这样的:

char * str = "Foo";
Reverse_String(str, 3);
printf("Reversed: '%s'.\n", str);
Run Code Online (Sandbox Code Playgroud)

然后你肯定会得到一个访问冲突,因为str指向只读内存.请尝试以下语法:

char str[] = "Foo";
Reverse_String(str, 3);
printf("Reversed: '%s'.\n", str);
Run Code Online (Sandbox Code Playgroud)

这实际上会将"Foo"字符串的副本复制到可以覆盖的本地缓冲区中.