char *name[]={"Riyaz","Kapil","mayank","Ankur"};
int len=0;
len=strlen(name[1]);
cout<<"\n String 2 is "; puts(name[1]); cout<<"\n and string 3 is";puts(name[2]);
//exchange now//
char *temp;
temp=name[1];
name[1]=name[2];
name[2]=temp;
len=strlen(name[1]);
cout<<"\nExchanged string is "; puts(name[1]);
return 0;
如何在此代码中删除&#34;已弃用的字符串常量转换为&#39; char *&#39;&#34; 警告?
我实际上是在指针数组上尝试这个程序,所以考虑到这一点,建议做一些改变。
答案 0 :(得分:6)
只需将数组声明为
即可const char *name[]={"Riyaz","Kapil","mayank","Ankur"};
^^^^^
与C ++中的C相反字符串文字具有常量字符数组的类型,表达式中的数组转换为指向其第一个元素的指针。虽然在这两种语言中,字符串文字是不可变的。
相应变量temp
也必须声明为
const char *temp;
考虑这些声明
const char *name[]={"Riyaz","Kapil","mayank","Ankur"};
和
const char * const name[]={"Riyaz","Kapil","mayank","Ankur"};
不同。
第一个数组不是常量数组。它的元素可以更改,您可以在程序中执行此操作。而第二个数组是一个常数数组。它的元素可能不会改变。
至于程序,而不是这段代码
const char *temp;
temp=name[1];
name[1]=name[2];
name[2]=temp;
您可以使用标头std::swap
中声明的标准函数<utility>
。例如
#include <utility>
//...
std::swap( name[1], name[2] );
答案 1 :(得分:1)
由于您将问题标记为 C ++ (而不是C),您可能希望使用方便的 C ++类来构建字符串数组,例如 {{ 1}} 强>:
std::vector<std::string>