基本的に、私はこれをやろうとしている:きれいにこれを行う方法は宣言時にバッファで配列を初期化する方法はありますか?
char x[] = "hello";
char* y = new char[sizeof(x)](x); // won't work.
ありますか?未処理の配列、または生のポインタを使用しないでください。
基本的に、私はこれをやろうとしている:きれいにこれを行う方法は宣言時にバッファで配列を初期化する方法はありますか?
char x[] = "hello";
char* y = new char[sizeof(x)](x); // won't work.
ありますか?未処理の配列、または生のポインタを使用しないでください。
関数を書くだけです。
template<typename T, size_t N>
T* new_array(T const(&arr)[N])
{
T* p = new T[N];
std::copy(std::begin(arr), std::end(arr), p);
return p;
}
int main()
{
char x[] = "hello";
char* y = new_array(x);
}
もちろんです。 *頭をひっくり返す* – Adrian
Cの方法:
char* y = strdup(x);
free(y);
あなたは生の配列または生のポインタを使用していないとはどういう意味ですか?あなたが求めていることではありませんか? – Daniel
あなたのタグが示唆しているようにC++ 11を使用しているなら、[std :: arrayをここに示す方法で使うことができます](http://stackoverflow.com/a/27708185/919747)。 –
['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)はそれをきれいにする方法です。 – 0x499602D2