指针和引用.简单字符操作程序 我试图编写一个C++程序,它通过一个char数组,在CH2中用ch2替换ch1,我现在遇到的问题是要改变实际的字符串,而不是返回一个新的字符串。在C++中,你会使用“REF”,但是我很困惑C++中如何做到这一点,你需要一个**还是&?
下面的代码有很多错误: (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&”指针和引用.简单字符操作程序 我试图编写一个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”。
#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;
}
}