2011-06-02 112 views
5
char  *buffer1 = "abc"; 

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

    std :: string str (buffer2); 

這工作,但我要聲明的std :: string對象海峽一次,並用它多次來存儲不同爲const char *如何在std :: string中存儲const char *?

什麼是出路?

+1

請澄清你想要做什麼,可能以你想要工作的代碼爲例。 (你發佈的代碼並沒有太多敏感) – Mat 2011-06-02 11:55:13

+0

@Mat啊,好吧,在發佈這個問題後不久,我發現了一個簡單的解決方案:doh:'std :: string str(buffer2);'一種簡單的存儲方式那個const char *就是使用stl類的'append'函數!像'std :: string str; str.append(buffer2);' ' – 2011-06-02 11:58:31

回答

13

您只需重新分配:

const char *buf1 = "abc"; 
const char *buf2 = "def"; 

std::string str(buf1); 

str = buf2; // Calls str.operator=(const char *) 
+1

是的,甚至更多的選項string :: assign ... – 2011-06-02 11:59:19

1

str實際上是從buffer2複製的字符,所以它不以任何方式連接。

如果你希望它有另一個值,你只需指定一個新的

str = "Hello"; 
0

使類說的MyString其組成的字符串緩衝區。 有一個常數的那個類。 然後你可以重新分配組合字符串緩衝區的值,同時使用相同的常量。

1

啊,就像我上面的評論,找到了答案張貼的問題後不久:衛生署:

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

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

所以,我可以調用的append()函數多次(使用明確後())因爲我想用「const char *」在同一個對象上。

儘管「push_back」函數不能代替「append」。

+2

'assign'會更具表現力(和更短,更清晰),然後是clear,接着是append,但使用'='的簡單分配也可以。 – 2011-06-02 12:10:16

相關問題