提问人:Giovanni Scordilli 提问时间:8/17/2023 最后编辑:Giovanni Scordilli 更新时间:8/18/2023 访问量:99
如何填充指向 char 数组的unique_ptr?[已结束]
How I can fill a unique_ptr that is pointing to a char array? [closed]
问:
可以将某些内容放入指向 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,但不起作用
答:
0赞
Andrej Podzimek
8/18/2023
#1
这取决于你想要什么样的数组。对于动态大小的数据,只需使用 .对于静态大小的东西,下面在效率方面获胜,堆栈上有一个简单的缓冲区。它不使用 a ,但不清楚为什么练习会无缘无故地强迫您使用动态分配。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';
}
评论
std::string
cin >> ptr.get();
?或?cin.getline(ptr.get(), LEN);
unique_ptr
.get()