c++ - C++中的字符串反转

标签 c++ visual-c++

<分区>

为什么当我尝试更改字符串中的字符时,这段代码会抛出异常

void reverseString(char *s)
{
    int e = strlen(s) - 1;
    int b = 0;
    char t1,t2;

    while(b < e)
    {
        t1 = s[b];
        t2 = s[e];
        s[b] = t2;
        s[e] = t1;
        b++;
        e--;
    }
} 

最佳答案

我的猜测是您正在测试的字符串存储在只读内存中。您是否使用字符串文字定义它?

稍后添加以详细说明:

如果你这样做,

char *s = "Hello";
reverseString(s);

你可能会崩溃,因为字符串可以存储在只读内存中,大多数编译器都会把它放在那里。

如果另一方面,你写,

char s[] = "Hello";
reverseString(s);

它会起作用。

关于c++ - C++中的字符串反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868215/

相关文章:

c++ - 是否可以使用 Visual Studio 创建 C++ GUI?

winapi - Win32 API - RegisterClassEx 错误

c++ - 创建对话框时更改对话框的标题

c++ - 如何在 Windows 上使用 Visual C++ 强制加载链接库

windows - raw_interfaces_only 用法?

c++ - C++ 中的局部变量通常在什么时候分配内存?

C++:响应 Windows 注销的清理操作

c++ - 如果我将结构的 int 成员转换为 char* 以对其进行序列化,那么在反序列化时是否应该将其转换为 int* 类型?

c++ - 在 C++11 中返回可变值

c++ - 用C++查找文件大小