how to initialize string pointer?

后端 未结 4 1520
再見小時候
再見小時候 2021-01-13 02:58

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

If I do like

string *array = {\"value\"};

the error occurs

相关标签:
4条回答
  • 2021-01-13 03:08

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

    int main()
    {
      string *array = new string[1]; 
      array[1] = "value";
      return 0;
    }
    
    0 讨论(0)
  • 2021-01-13 03:09

    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.

    0 讨论(0)
  • 2021-01-13 03:09

    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.

    0 讨论(0)
  • 2021-01-13 03:23

    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")};
    
    0 讨论(0)
提交回复
热议问题