char *buffer1 = "abc";
const char *buffer2 = (const char*) buffer;
std :: string str (buffer2);
這工作,但我要聲明的std :: string對象即海峽,一次,並用它多次來存儲不同爲const char *。如何在std :: string中存儲const char *?
什麼是出路?
char *buffer1 = "abc";
const char *buffer2 = (const char*) buffer;
std :: string str (buffer2);
這工作,但我要聲明的std :: string對象即海峽,一次,並用它多次來存儲不同爲const char *。如何在std :: string中存儲const char *?
什麼是出路?
您只需重新分配:
const char *buf1 = "abc";
const char *buf2 = "def";
std::string str(buf1);
str = buf2; // Calls str.operator=(const char *)
是的,甚至更多的選項string :: assign ... – 2011-06-02 11:59:19
str
實際上是從buffer2
複製的字符,所以它不以任何方式連接。
如果你希望它有另一個值,你只需指定一個新的
str = "Hello";
使類說的MyString其組成的字符串緩衝區。 有一個常數的那個類。 然後你可以重新分配組合字符串緩衝區的值,同時使用相同的常量。
啊,就像我上面的評論,找到了答案張貼的問題後不久:衛生署:
const char* g;
g = (const char*)buffer;
std :: string str;
str.append (g);
所以,我可以調用的append()函數多次(使用明確後())因爲我想用「const char *」在同一個對象上。
儘管「push_back」函數不能代替「append」。
'assign'會更具表現力(和更短,更清晰),然後是clear,接着是append,但使用'='的簡單分配也可以。 – 2011-06-02 12:10:16
請澄清你想要做什麼,可能以你想要工作的代碼爲例。 (你發佈的代碼並沒有太多敏感) – Mat 2011-06-02 11:55:13
@Mat啊,好吧,在發佈這個問題後不久,我發現了一個簡單的解決方案:doh:'std :: string str(buffer2);'一種簡單的存儲方式那個const char *就是使用stl類的'append'函數!像'std :: string str; str.append(buffer2);' ' – 2011-06-02 11:58:31