【问题标题】:How to store a const char* in std :: string?如何将 const char* 存储在 std :: string 中?
【发布时间】:2011-09-07 00:50:24
【问题描述】:
    char       *buffer1 = "abc";

    const char *buffer2 = (const char*) buffer;

    std :: string str (buffer2);

这可行,但我想声明 std::string 对象,即 stronce 并多次使用它来存储不同的常量字符*.

出路是什么?

【问题讨论】:

  • 请说明您希望能够做什么,可能带有您想要工作的代码示例。 (您发布的代码没有多大意义)
  • @Mat 啊,好吧,发布这个问题后不久,我也找到了简单的解决方案:doh:std :: string str (buffer2); 存储 const char* 的一种简单方法是使用 append 函数stl类!喜欢std :: string str; str.append (buffer2);`

标签: c++ string pointers stl


【解决方案1】:

嗯,正如我在上面评论的那样,在发布问题后不久就找到了答案:doh:

    const char* g;
    g = (const char*)buffer;

    std :: string str;
    str.append (g);

所以,我可以在同一个对象上使用“const char *”多次调用 append() 函数(在使用 clear() 之后)。

虽然“push_back”功能不能代替“append”。

【讨论】:

  • assign 会比clear 后跟append 更有表现力(更短更清晰),但使用= 的简单分配也可以。
【解决方案2】:

让一个类说 MyString 组成字符串缓冲区。 有那个类的常量。 然后你可以重新分配组合字符串缓冲区的值,同时使用相同的常量。

【讨论】:

    【解决方案3】:

    你可以重新分配:

    const char *buf1 = "abc";
    const char *buf2 = "def";
    
    std::string str(buf1);
    
    str = buf2; // Calls str.operator=(const char *)
    

    【讨论】:

      【解决方案4】:

      str实际上是从buffer2复制字符,所以没有任何连接。

      如果你想让它有另一个值,你只需分配一个新的值

      str = "Hello";
      

      【讨论】:

        猜你喜欢
        • 2017-04-13
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 2018-08-23
        • 2020-06-26
        • 2016-08-15
        • 2011-05-11
        • 2016-09-12
        相关资源
        最近更新 更多