5

静的な値を文字列ポインタに格納したいのですが可能ですか?

もし私が好きなら

string *array = {"value"};

エラーが発生します

error: cannot convert 'const char*' to 'std::string*' in initialization
4

4 に答える 4

7

次に、書く必要があります

string *array = new string("value");

あなたは使用した方が良いですが

string array = "value";

それが意図された使用方法だからです。それ以外の場合は、メモリを追跡する必要があります。

于 2012-08-08T07:34:26.403 に答える
2

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ポインターの代わりに、スマートポインターを使用することをお勧めします。

于 2012-08-08T07:35:49.570 に答える
1

arrayの配列と同様に、これstringを試すことができます:

int main()
{
  string *array = new string[1]; 
  array[1] = "value";
  return 0;
}
于 2012-08-08T08:20:03.683 に答える
0

リテラルを文字列に明示的に変換できます。

 std::string array[] = {std::string("value")};

ただし、これをポインタではなく配列として定義する必要があることに注意してください。もちろん、次のように複数の要素がある場合、配列はほとんど意味があります。

string array[] = {string("value1"), string("value2"), string("etc")};
于 2012-08-08T07:35:59.820 に答える