[C++][ubuntu]C++如何将char*赋值给另一个char*

Posted FL1623863129

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++][ubuntu]C++如何将char*赋值给另一个char*相关的知识,希望对你有一定的参考价值。

方法一:直接用=,在ubuntu上测试通过,windows好像不行,代码如下:

   #include <iostream>
   #include <unistd.h>
   using namespace std;
   int main(int argc, char *argv[])
    char* aa="hello";
    char* bb=aa;
   std::cout<<bb<<std::endl;
     return 0;
   
方法二:使用strcpy,代码如下:

#include <iostream>
  #include <unistd.h>
  #include <string.h>
  using namespace std;
  int main(int argc, char *argv[])
   char* aa="hello";
   char* bb;
   bb=new char[6];//注意设置5报错,要算\\0
   strcpy(bb,aa);
 std::cout<<bb<<std::endl;
  delete[] bb;
    return 0;
  
点评:这种方法需要知道原char*长度,而且需要delete防止内存泄漏

方法三:使用memcpy,代码如下:

 #include <iostream>
#include <unistd.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
 char* aa="hello";
 char* bb;
   bb=new char[5];
   memcpy(bb,aa,5);//测试发现设置5也行
  std::cout<<bb<<std::endl;
 delete[] bb;
    return 0;
  

点评:这种方法需要知道原char*长度,而且需要delete防止内存泄漏

方法四:sprintf函数

#include <iostream>
#include <unistd.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
char* aa="hello";
 char* bb;
bb=new char[6];
sprintf(bb,"%s",aa);
std::cout<<bb<<std::endl;
delete[] bb;
return 0;

方法五:循环遍历
#include <iostream>
#include <unistd.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
char* aa="hello";
char* bb;
bb=new char[6];
int i = 0;
while (*aa != '\\0')
bb[i++] = *aa++;
bb[i] = '\\0';             //添加结束符
std::cout<<bb<<std::endl;
delete[] bb;
return 0;

 

以上是关于[C++][ubuntu]C++如何将char*赋值给另一个char*的主要内容,如果未能解决你的问题,请参考以下文章

[C++][ubuntu]C++如何将char*赋值给另一个char*

c++程序 我为啥不能将string类的变量赋给char数组,我按书上打的?

C++中string和char字符串的异同与使用方法

C++中如何把指针中的值取出来赋给常规变量

C++中能否用memset将int数组元素设为-1?

如何将 python ndarray 转换为 c++ char*?