指针和引用.简单字符操作程序 我试图编写一个C++程序,它通过一个char数组,在CH2中用ch2替换ch1,我现在遇到的问题是要改变实际的字符串,而不是返回一个新的字符串。在C++中,你会使用“REF”,但是我很困惑C++中如何做到这一点,你需要一个**还是&?

指针和引用.简单字符操作程序 我试图编写一个C++程序,它通过一个char数组,在CH2中用ch2替换ch1,我现在遇到的问题是要改变实际的字符串,而不是返回一个新的字符串。在C++中,你会使用“REF”,但是我很困惑C++中如何做到这一点,你需要一个**还是&?,c++,pointers,reference,C++,Pointers,Reference,下面的代码有很多错误: (7) :错误C2664:“strlen”:无法将参数1从“char”转换为“const char*”。从整数类型转换为指针类型需要重新解释类型转换、C样式转换或函数样式转换 (7) :错误C2440:“正在初始化”:无法从“char*”转换为“char[]”虽然有对数组的引用或指针的转换,但没有对数组类型的转换 (11) :错误C2100:非法间接寻址 (17) :错误C2100:非法间接寻址 (24):错误C2440:“=”:无法从“char[]”转换为“char”。

下面的代码有很多错误:

(7) :错误C2664:“strlen”:无法将参数1从“char”转换为“const char*”。从整数类型转换为指针类型需要重新解释类型转换、C样式转换或函数样式转换

(7) :错误C2440:“正在初始化”:无法从“char*”转换为“char[]”虽然有对数组的引用或指针的转换,但没有对数组类型的转换

(11) :错误C2100:非法间接寻址

(17) :错误C2100:非法间接寻址

(24):错误C2440:“=”:无法从“char[]”转换为“char”。没有可以进行此转换的上下文

(36):错误C2664:“替换”:无法将参数1从“char[17]”转换为“char&”

#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;
}
#包括
#包括
使用名称空间std;
int替换(字符和str、字符ch1、字符ch2)
{
char newStr[]=新字符[strlen(str)+1];
int i=0;
而(str!='\0')
{
如果(*str==ch1)
{
newStr[i]=ch2;
}
其他的
{ 
newStr[i]=*str;
}
str++;
i++;
}
newStr[i]='\0';
str=newStr;
返回0;
}
int main()
{
char str[]=“我的名字叫克雷格”;
char takeOut='C';
char改为='a';
C++中的CUT< P>使用和:

如果出于任何原因,您希望实现自己的版本,将指针指向以null结尾的字符串,那么要点是您不需要创建新字符串:

void replace(char* str, char ch1, char ch2)
{
  while (*str != '\0')
  {
    if (*str == ch1) *str = ch2;
    ++str;
  }
}
void replace(char* str, char ch1, char ch2)
{
  while (*str != '\0')
  {
    if (*str == ch1) *str = ch2;
    ++str;
  }
}