c++ - 如何在cin之后新建一个动态数组
问题描述
我正在尝试创建一个包含指针的类,它是动态数组的核心。如何重载运算符 >> 这样我就可以在不知道要放置多少个字符的情况下将 cin >> 指向指针?我在尝试:
#include <iostream>
class MyString
{
private:
char* str;
size_t length;
public:
//some code here
friend std::istream& operator>>(std::istream& is, const MyString& other)
{
is >> other.str;
return is;
}
}
这发生在我尝试输入字符串时: HEAP CORRUPTION DETECTED
有没有办法读取字符串,将其分配给我的字符串,并且不会使用 std::string 标头?(我试图创建一个不依赖于 std::string 的字符串类)
解决方案
一个简单的实现将用于is.get()
一次检索一个字符,并将其附加到other
,如果需要,可以调整大小。std::isspace(chr)
当然,当是真的时停止。为此,您需要动态分配内存并跟踪在MyString
.
这是它的骨架;您可能需要实现该append()
方法。
friend std::istream& operator>>(std::istream& is, MyString& other) {
while (true) {
int chr = is.get();
if (is.eof() || std::isspace(chr)) {
break;
}
other.append((char)chr);
}
return is;
}
推荐阅读
- javascript - 如何从拉取请求中删除 node_modules?
- python - ImportError:无法从“torchvision.models”导入名称“mobilenet_v2”
- python - MLPRegressor 没有给出准确的结果
- c++ - 为什么我的 C++11 程序只能在 Linux 和 Mac 上运行,但在 Windows 上显示错误?
- flutter - 如何在 Flutter 应用中添加智能手表/手环?
- c# - 使用 C# 创建的 Excel 文件为空白且灰显
- java - 无法让 @Resource 注释在 Springboot 中工作
- asp.net - 如何为为 ASP.NET WEB API 创建的 swagger UI 启用 API-KEY 授权
- node.js - Jquery 数据表 Nodejs 服务器端渲染
- c# - 后台工作线程和异步调用