如何初始化字符串指针

how to initialize string pointer?

本文关键字:指针 字符串 初始化      更新时间:2023-10-16

我想将静态值存储在字符串指针中,可行吗?

如果我喜欢

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

建议您使用智能指针而不是原始指针来动态分配的对象。

由于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")};