【发布时间】:2016-04-10 22:46:38
【问题描述】:
我的任务是编写一个函数char * stringReplace(const char * str, const char * what, const char * with),它用正确长度的新字符串将“what”替换为“with”。所以在函数内部我创建了函数返回的动态数组。但我的问题是如何删除它,因为如果我尝试在主函数中删除它,在我使用它之后,它说它是未定义的。不是没有范围的动态数组还是我错了?
这是我的代码:
#include <iostream>
#include <string.h>
using namespace std;
bool areTheSame(const char * str, const char * what, unsigned p)
{
return areEqual;
}
unsigned howManyTimes(const char * str, const char * what)
{
}
char * stringReplace(const char * str, const char * what, const char * with)
{
}
int main()
{
char str[1000];
char what[1000];
char with[1000];
cout << "Enter your string\n";
cin.getline(str, 1000);
cout << "\nEnter \"what\" you want to replace\n";
cin.getline(what, 1000);
if (strlen(str) < strlen(what))
{
cout << "\"What\" contains more characters than the string!\n";
return 0;
}
cout << "\nEnter with what you want to replace it\n";
cin.getline(with, 1000);
cout << "\nYour string with replaced words looks like\n";
cout << stringReplace(str, what, with) << endl;
return 0;
}
P.S 我删除了部分代码,因为我找到了我想要的答案,还有时间完成任务,我不确定我是否可以公开发布我的代码
【问题讨论】:
-
嗯...我在您的主要功能中看不到任何
delete。如果您将stringReplace的结果存储在变量中,它应该可以工作,如果delete是非空的,它应该可以工作。 -
在 main() 中将
stringReplace(str, what, with)的返回值放入 char* 类型的变量中。然后删除cout后面的[]。
标签: c++ arrays string dynamic char