我目前正在学习C ++,我已经进行了此活动,我需要将数组从大写转换为小写,反之亦然:
int main()
{
char str[100];
cout << "Enter anything: ";
cin.getline(str, 100);
//upper to lower vice versa
for (int i = 0; i < 100; i++) {
if (str[i] == 0x20)
{
continue;
}
str[i] ^= 0x20;
}
cout << "output: " << str;
return 0;
}
但是他们希望我使用new []和delete []运算符,所以我将不再在数组中声明数字,这是char str [100]的一部分; ,我已经尝试使用它,但是这个概念让我感到困惑。
有什么建议吗?任何帮助都感激不尽!预先感谢!
答案 0 :(得分:3)
int main(){
char *str;
int sz = 0;
std::cout << "enter number of characters: ";
std::cin >> sz;
str = new char[sz + 1];
std::cout << "Enter anything: ";
std::cin.ignore();
std::cin.getline(str, sz + 1);
//upper to lower vice versa
for (int i = 0; i < sz; i++) {
if (str[i] == 0x20)
{
continue;
}
str[i] ^= 0x20;
}
std::cout << "output: " << str;
delete[] str;
return 0;
}
使用 new 可以在堆上分配内存,使用 delete [] 可以分配内存。
注意:必须将 sz + 1 分配为数组的大小,因为 getline 将 0字符放在最后。>
答案 1 :(得分:0)
从现在开始,我建议您在cplusplus中查看信息!如果您开始,这确实是一个很好的帮助!
char* userInput;
int length;
std::cout<<"Input the length of the array!"<<std::endl;
std::cin>>length;
std::cout<<"Creating memory!"<<std::endl;
userInput=new char[length+1];
现在想象您要创建一个矩阵(一个数组数组)。
首先,您要执行上述操作,然后,对于数组中的数组数,例如,在for
循环中,您将以同样的方式进行操作。
delete[] userInput;
删除分配的内存。
对于我正在讨论的矩阵示例,同样的事情:您首先在循环中删除(因为如果删除第一个数组,则无法访问其中的数组的已分配内存!),然后“删除” “从阵列中删除该内存,即可删除该阵列的内存!