gpt4 book ai didi

c++ - 指针和引用 - 简单的 CharArray 操作程序

转载 作者:行者123 更新时间:2023-11-28 02:30:25 24 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个程序,它通过一个 char 数组,随着它的进行用 ch2 替换 ch1,我遇到的问题是让它改变输入的实际字符串而不是返回一个新的字符串。在 C# 中,您会使用“ref”,但我很困惑如何在 C++ 中执行此操作,您需要 * 还是 &?

下面的代码有很多错误:

(7): error C2664: 'strlen' : 无法将参数 1 从 'char' 转换为 'const char *' 从整数类型到指针类型的转换需要 reinterpret_cast、C 风格转换或函数风格转换

(7): error C2440: 'initializing' : cannot convert from 'char *' to 'char []' 尽管存在对数组的引用或指针的转换,但没有对数组类型的转换

(11): error C2100: 非法间接寻址

(17): error C2100: 非法间接寻址

(24): error C2440: '=' : 无法从 'char []' 转换为 'char' 没有可以进行此转换的上下文

(36): error C2664: 'replace' : 无法将参数 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;
}

最佳答案

在 C++ 中你会使用 std::stringstd::replace :

std::string s = "My name is Craig";
std::replace(s.begin(), s.end(), 'C', 'a');

如果出于某种原因你想实现你自己的版本,使用一个指向空终止字符串的指针,要点是你不需要创建一个新的字符串:

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

关于c++ - 指针和引用 - 简单的 CharArray 操作程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com