c++ - 访问冲突写入位置 0x00E1DCC4

标签 c++ pointers

<分区>

假设我们需要用 C++ 删除字符“M”。

这里我在 string[j] = string[j + 1] 行得到了一个 execption;

当产生错误时,i和j的值都是4。

如果我正确地传递了字符串的值,请告诉我,我不确定字符串是如何终止的。

这个问题之前好像有答案但是没有!因为,和别人的代码不一样!!

#include<iostream>
#include<conio.h>
#include<string>

using namespace std;

void func(char string[])
{
    for (int i = 0; i < strlen(string); i++)
    {
        if (string[i] == 'M')
        {
            for (int j = i; j < strlen(string); j++)
            {
                string[j] = string[j + 1];
                            (this is where an exception being is generated)
            }
        }
    }
    cout << "string finally - " << string;
}

int main()
{
    func("GoodMorning\0");

    int buffer;
    cin >> buffer;

    return 0;
}

最佳答案

您正在尝试修改字符串文字的内容。你不能那样做。

放弃 C 弦古物并使用 std::string ;包括<string>你快到了。

关于c++ - 访问冲突写入位置 0x00E1DCC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33090501/

相关文章:

c++ - 指针随时间的改进/变化?

c++ - 工厂模式 : typedef Class *(createClassFunction)(void)

java - 尽管在主要 Activity 中工作,但 native 函数在自定义 View 中抛出 UnsatisfiedLinkError

c++ - 在双向链表中添加函数导致无限循环

C - 带参数的计算器

c++ - 指针引用和取消引用

C++ SFML Sprite 不显示/工作

c++ - 将 vector<unique_ptr<Derived>> move 到 vector<unique_ptr<Base>>

指向对象的 C++ 指针

c - 如果我想用 C 语言编写数组,如何将其放入函数中?