在标题中,我需要使用字符数组在某个单词的开头添加用户指定的空格数.我需要在一个函数中执行它,该函数将我的数组作为参数并返回它.这是我的代码:
#includeusing namespace std; void writeDownCharArray(char t[], int sizee) { for (int i=0;i >numberOfSpaces; writeDownCharArray(addSpaces(t, numberOfSpaces), HERE); return 0; }
现在:我如何将其打印到屏幕上?如果我说它cout<
writeDownCharArray
,那么我应该把什么放在"这里"呢?
解决这个问题的C++方法就是使用std::string
类似的方法
std::string add_spaces(const std::string & line, std::size_t number_of_spaces) { std::string spaces(number_of_spaces, ' '); return spaces + line; }
如果你不能使用std::string
那么你正在做必须处理动态内存分配和更改
char t2[numberOfCharacters+10];
至
char * ts = new char[numberOfCharacters + ammountOfSpaces + 1];
我们必须有这个,因为可变长度数组不是标准的,并且尝试返回指向函数中声明的数组的指针将留下悬挂指针并尝试使用它是未定义的行为.
由于new[]
在函数中使用了,因此您需要记住调用delete[]
完成后返回的指针.这是使用a的另一个好处,std::string
因为它照顾自己.
就writeDownCharArray
您而言,您不需要大小参数,因为cout
可以处理空终止的c字符串.你可以简单地拥有
void writeDownCharArray(char t[]) { cout<然后你的主要看起来像
char * foo = addSpaces(t, numberOfSpaces); writeDownCharArray(foo); delete [] foo;