访问冲突写入位置0x00E1DCC4

时间:2015-10-12 21:26:09

标签: c++ pointers

让我们说我们需要删除角色' M'用C ++。

这里我在行字符串[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;
}

1 个答案:

答案 0 :(得分:3)

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

删除C字符串古物并使用std::string;包括<string>你几乎就在那里。