std :: string c_str()的问题

时间:2017-03-01 21:06:30

标签: c++ string stl

我在这里缺少什么?这真是太刺激了!

基本上,在main()t.p3()中总是产生随机垃圾,好像指针无效,但其他一切总是有效!我确定差异在于字符串的长度。这是什么伏都教?

如何让t.p3()工作?

#include <string>
#include <iostream>

static const std::string STRING1( "xxxxxxxxxxxxxxx" );
static const std::string STRING2( "xxxxxxxxxxxxxxxx" ); // MAGIC 16 characters

struct Test
{
    std::string string1() const { return STRING1; }
    std::string string2() const { return STRING2; }
    const char * p1() const { return STRING1.c_str(); }
    const char * p2() const { return STRING2.c_str(); }
    const char * p3() const { return string1().c_str(); }
    const char * p4() const { return string2().c_str(); }

};

int main(int argc, char *argv[])
{
    Test t;
    std::cout << t.p1() << std::endl; // works
    std::cout << t.p2() << std::endl; // works
    std::cout << t.p3() << std::endl; // random garbage
    std::cout << t.p4() << std::endl; // works
    return 0;
}

0 个答案:

没有答案