C++ 为什么在尝试用星号替换数组中的字符串时会发生错误?

C++ 为什么在尝试用星号替换数组中的字符串时会发生错误?,c++,C++,它不允许我替换数组中的字符串,我不知道为什么 if (t1Array[n] == banArray[o]) { //t1Array[n] = "***"; t1Array[n].replace(1, 2, 3, "***"); banArrayCount[o] ++; t1filterfile << t1Array[n]; } if(t1Array[n]==banArray[o]) { //t1Array[n]=“***”; t1Array[n]。替换(1,

它不允许我替换数组中的字符串,我不知道为什么

if (t1Array[n] == banArray[o])
{
   //t1Array[n] = "***";
   t1Array[n].replace(1, 2, 3, "***");
   banArrayCount[o] ++;
   t1filterfile << t1Array[n];
}
if(t1Array[n]==banArray[o])
{
//t1Array[n]=“***”;
t1Array[n]。替换(1,2,3,“***”);
班纳瑞计数[o]++;

t1filterfile我认为您误解了
std::string::replace
的工作方式:

#include <iostream>
#include <string>

int main() {
    std::string str = "0123456789";
    std::cout << str.replace(2,3,"***");
}

输出
01*789

似乎要将字符串
t1Array[n]
位置1开始的2个字符替换为3个星号

如果是这样的话,那么电话将看起来像

t1Array[n].replace( 1, 2, 3, '*' );
t1Array[n].replace( 1, 2, "***" );
此调用对应于以下成员函数声明

basic_string& replace(size_type pos, size_type n1, size_type n2, charT c);
或者您可以使用以下成员函数

basic_string& replace(size_type pos, size_type n1, const charT* s);
在这种情况下,调用将显示为

t1Array[n].replace( 1, 2, 3, '*' );
t1Array[n].replace( 1, 2, "***" );

考虑到位置从
0开始

替换功能具有以下原型-

replace(starting location of replacement,number of characters to be replaced,a pointer to the string)