静的な値を文字列ポインタに格納したいのですが可能ですか?
もし私が好きなら
string *array = {"value"};
エラーが発生します
error: cannot convert 'const char*' to 'std::string*' in initialization
次に、書く必要があります
string *array = new string("value");
あなたは使用した方が良いですが
string array = "value";
それが意図された使用方法だからです。それ以外の場合は、メモリを追跡する必要があります。
std::string
ポインタはオブジェクトを指している必要がありますstd::string
。実際に何を指しているかは、ユースケースによって異なります。例えば:
std::string s("value"); // initialize a string
std::string* p = &s; // p points to s
上記の例では、自動保存期間p
のあるローカルを指します。string
それが破壊されると、それを指すものはすべてゴミを指します。
動的に割り当てられた文字列へのポインタを指すようにすることもできます。その場合、完了時にリソースの解放を担当します。
std::string* p = new std::string("value"); // p points to dynamically allocated string
// ....
delete p; // release resources when done
動的に割り当てられたオブジェクトへのrawポインターの代わりに、スマートポインターを使用することをお勧めします。
array
の配列と同様に、これstring
を試すことができます:
int main()
{
string *array = new string[1];
array[1] = "value";
return 0;
}
リテラルを文字列に明示的に変換できます。
std::string array[] = {std::string("value")};
ただし、これをポインタではなく配列として定義する必要があることに注意してください。もちろん、次のように複数の要素がある場合、配列はほとんど意味があります。
string array[] = {string("value1"), string("value2"), string("etc")};