You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中通过string指针数组将字符串复制到string变量?

解决你的字符串复制问题

嗨,这事儿其实挺简单的,因为C++的std::string本身就支持直接赋值操作,你只需要在第二个循环里加一行代码就能完成复制需求了。

修改后的完整代码如下:

#include <iostream>
#include <string> // 这里建议把<string.h>换成<string>,因为<string.h>是C语言的字符串头,C++的std::string用<string>才是标准写法
using namespace std;
int main(){
 string *seq[5],str[5],cpy;
 for(int i=4;i>=0;i--) 
 {
 cin>>str[i];
 seq[i]=&str[i];
 }
 for(int i=0;i<5;i++) 
 {
 cpy = *seq[i]; // 这就是实现复制的核心代码
 cout<<cpy<<endl; // 现在会按顺序输出str[0]到str[4]的内容啦
 }
}

为什么这行代码能生效?

  • seq[i]是指向std::string对象的指针,*seq[i]就是这个指针指向的真实std::string实例。
  • std::string类已经重载了赋值运算符=,执行cpy = *seq[i]时,会把*seq[i]里的字符串内容完整复制到cpy中,而不是只复制指针地址,完全满足你的需求。

额外小提示

  • 你原来代码里的<string.h>是给C语言处理char*风格字符串用的头文件,对于C++的std::string,标准头文件是<string>,替换后更规范,也能避免一些潜在的问题。
  • 要是你只是想要输出内容,其实也可以直接写cout << *seq[i] << endl;,不用额外复制到cpy变量里,但如果你的业务逻辑确实需要把内容存到cpy里,那上面的赋值方法就是最直接的解决方案。

内容的提问来源于stack exchange,提问作者user8760140

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:10:36