可以将某些内容放入指向 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 但不起作用
这取决于你想要什么样的数组。对于动态大小的数据,只需使用
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';
}