我想将静态值存储在字符串指针中是否可能?
如果我喜欢
string *array = {"value"};
发生错误
error: cannot convert 'const char*' to 'std::string*' in initialization
答案 0 :(得分:6)
然后你需要写
string *array = new string("value");
虽然你最好使用
string array = "value";
因为这是使用它的预期方式。否则你需要跟踪记忆。
答案 1 :(得分: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
建议您使用smart pointers而不是动态分配对象的原始指针。
答案 2 :(得分:1)
由于array
是string
的数组,您可以尝试这样做:
int main()
{
string *array = new string[1];
array[1] = "value";
return 0;
}
答案 3 :(得分:0)
您可以将文字显式转换为字符串:
std::string array[] = {std::string("value")};
请注意,您必须将其定义为数组,而不是指针。当然,如果您有多个元素,则数组通常是有意义的,例如:
string array[] = {string("value1"), string("value2"), string("etc")};