Я пытаюсь написать программу на C++, которая проходит через массив символов, заменяя ch1 на ch2, поскольку проблема связана с тем, что я пытаюсь изменить фактическую строку который вводится, а не возвращает новую строку. В C# вы будете использовать «ref», но я смущен, как это сделать в C++, вам нужен * или &?Указатели и ссылки - Простая программа манипулирования CharArray
ниже код имеет много ошибок:
(7): C2664 ошибка: «STRLEN»: не удается преобразовать параметр 1 из «символа» до «Const символ *» Преобразование из интегрального типа к типу указателя требуется reinterpret_cast , Литье в стиле C или литье в стиле функции
(7): ошибка C2440: 'initializing': не может конвертировать из 'char *' в 'char []' Нет преобразований в типы массивов, хотя есть преобразования к ссылкам или указателям на массивы
(11): ошибка C2100: незаконное направление
(17): ошибка C2100: незаконное косвенность
(24): ошибка C2440: '=': не может преобразовать из 'полукокса []' до 'полукокса' Там нет контекста, в котором это преобразование можно
(36): ошибка C2664: 'заменить': не удается преобразовать параметр 1 из 'гольца [17]' к 'полукокса &'
#include<iostream>
#include<cstring>
using namespace std;
int replace(char & str, char ch1, char ch2)
{
char newStr[]= new char[strlen(str)+1];
int i=0;
while(str!='\0')
{
if(*str==ch1)
{
newStr[i]=ch2;
}
else
{
newStr[i]=*str;
}
str++;
i++;
}
newStr[i]='\0';
str = newStr;
return 0;
}
int main()
{
char str[]="My name is Craig";
char takeOut='C';
char changeTo='a';
cout << "Before: " << str <<endl;
int changes=replace(str, takeOut, changeTo);
cout << "After: " << str << endl;
cin.get();
cin.get();
return 0;
}