Sum*_*era 3 c++ dynamic-memory-allocation
我被要求在不使用C++的情况下从输入中获取一个字符串(可以是任何大小)string.我想过为char数组动态分配空间,并从SO本身获得以下实现.但我不确定这是否是一个很好的实施.是否有更好的实现,不需要您输入名称中的元素数量?
#include<iostream>
int main()
{
int size = 0;
std::cout << "Enter the size of the dynamic array in bytes : ";
std::cin >> size;
char *ptr = new char[size];
for(int i = 0; i < size;i++)
std::cin >> *(ptr+i);
}
Run Code Online (Sandbox Code Playgroud)
可能会弯曲规则(或者我不理解这个问题,但是......).无论如何,当有人用C++说"动态数组"时,我自然会想到一个向量.
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<char> vec;
copy(istreambuf_iterator<char>(cin),
istreambuf_iterator<char>(),
back_inserter(vec));
vec.push_back(0);
cout << vec.data() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
认为会做到这一点.
简短的版本
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<char> vec {istreambuf_iterator<char>(cin),
istreambuf_iterator<char>()} ;
vec.push_back(0);
cout << vec.data() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)