如何填充指向 char 数组的 unique_ptr?

问题描述 投票:0回答:1

可以将某些内容放入指向 char 数组的 unique_ptr 中,如下所示:

#include <iostream>
#include <memory>
#define LEN 100
using std::cout, std::cin;

int main() {
    std::unique_ptr<char[]> ptr {new char[LEN]};

    cout << "Enter a word: \n";
    cin >> ptr;
}

我尝试过这个以及 getline 但不起作用

c++ arrays unique-ptr
1个回答
0
投票

这取决于你想要什么样的数组。对于动态大小的数据,只需使用

std::string
。对于静态大小的东西,下面的
a3
在效率方面获胜,堆栈上的简单缓冲区。它没有使用
unique_ptr
,但不清楚为什么该练习会无缘无故地迫使您使用动态分配。

#include <array>
#include <cstdint>
#include <iostream>
#include <memory>

namespace {
constexpr size_t LEN = 100;
}

int main() {
  std::unique_ptr a1{std::make_unique<char[]>(LEN)};
  std::unique_ptr a2{std::make_unique<std::array<char, LEN>>()};
  std::array<char, LEN> a3;

  std::cout << "Enter a word: \n";
  std::cin.getline(a1.get(), LEN);
  std::cout << "Enter a word: \n";
  std::cin.getline(a2->data(), LEN);
  std::cout << "Enter a word: \n";
  std::cin.getline(a3.data(), LEN);

  std::cout << a1.get() << '\n' << a2->data() << '\n' << a3.data() << '\n';
}
© www.soinside.com 2019 - 2024. All rights reserved.