c++ - 如何在没有指针的情况下将字符/字符串从子函数返回到主函数?
问题描述
您好,我仍然是 C++ 或一般编码的初学者。所以我的讲师没有教我们指针。
所以我在网上搜索,你需要用它char*
来调用它。因为我不能用char*
我只能用char name();
char* name();// example for char* I want without *
char*name(){
char name[50];
cout<<"name:";
cin.getline(name,50);
return name;
}
int main(){
char staff[50];
strcpy(staff,name());
cout<<"name:"<<staff;
return 0;
}
如何在不使用和使用 的情况下返回name
主函数(请注意,我可以使用引用,但我不知道 char 是否也可以用于它)。提前致谢char*
char();
解决方案
您正在查找的代码如下所示:
#include <iostream>
#include <string>
std::string name();
int main() {
std::string staff;
staff = name();
std::cout << "name:" << staff << std::endl;
return 0;
}
std::string name() {
std::string aName;
std::cout << "name: ";
std::getline(std::cin, aName);
return aName;
}
std::string
是一个类,它管理存储字符数据的缓冲区的分配、访问和解除分配。在内部,它有一个指向数据的指针。如果您希望指向的数据保持原位,则可以轻松地复制该对象甚至移动该对象。
这些移动语义看起来像:staff = std::move(name());
这只会将指针复制到数据而不是指针指向的数据。
永远不应使用单独的指针来转移 C++ 中的所有权。 unique_ptr
并且shared_ptr
应该使用。
如果您真的想使用原始指针返回数据(这是一个非常糟糕的主意),您将不得不使用 new
并且new[]
因为这将在自由存储上分配空间,当函数到达其范围的末尾时该空间将保持可用。delete
但是当程序以调用or结束时,它也使外部函数负责内存的释放delete[]
。
推荐阅读
- php - 在 Woocommerce 中将发件人电子邮件更改为客户帐单电子邮件
- django - Django:限制前端开发人员访问后端代码
- javascript - “this”未在 TypeScript 类中更新
- cmake - Protobuf CMake:PROTOBUF_LIBRARIES,PROTOBUF_INCLUDE_DIRS 保持为空
- php - 如何修改我的 PHP 数据库提取类以使用 MySQLi
- batch-file - 如何根据扩展名递归检查文件是否存在,如果存在,则使用 .bat 文件将其转换为 ffmpeg
- ssl - 如何在没有服务器证书的情况下配置通过 TLS 传输层进行通信的 gRPC 客户端?
- html - 对 Flex Shrink and Grow 非常困惑
- angularjs - 如何创建动态组件作为参数 - angular agGrid cellEditorFramework
- java - 纠结于在 PHP 中使用散列函数生成 xml 文件的散列