5

I want to store the static value in string pointer is it posible?

If I do like

string *array = {"value"};

the error occurs

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

4 Answers 4

7

you would then need to write

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

although you are better off using

string array = "value";

as that is the intended way to use it. otherwise you need to keep track of memory.

Sign up to request clarification or add additional context in comments.

Comments

2

A std::string pointer has to point to an std::string object. What it actually points to depends on your use case. For example:

std::string s("value"); // initialize a string
std::string* p = &s; // p points to s

In the above example, p points to a local string with automatic storage duration. When it it gets destroyed, anything that points to it will point to garbage.

You can also make the pointer point to a dynamically allocated string, in which case you are in charge of releasing the resources when you are done:

std::string* p = new std::string("value"); // p points to dynamically allocated string
// ....
delete p; // release resources when done

You would be advised to use smart pointers instead of raw pointers to dynamically allocated objects.

Comments

1

As array is an array of strings you could try this:

int main()
{
  string *array = new string[1]; 
  array[1] = "value";
  return 0;
}

Comments

0

You can explicitly convert the literal to a string:

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

Note that you have to define this as an array, not a pointer though. Of course, an array mostly makes sense if you have more than one element, like:

string array[] = {string("value1"), string("value2"), string("etc")};

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.