2010-02-10 163 views
1

如何將字符串附加到char? strcat(TotalRam,str); 是我得到的,但它不支持字符串如何將字符串附加到char?

+2

我無法正確理解那種可能引發這樣一個問題的思想混亂。 – wilhelmtell 2010-02-10 03:45:28

+2

@wilhelmtell,請尊重人們在不同的地方尋求掌握他們生活中不同點的節目。 – 2010-02-10 03:49:00

+0

你是否試圖從'char'和'std :: string'對象創建一個新的'std :: string'?換句話說,你是否想把一個長度爲1的std :: string與其他任意字符串結合起來? – 2010-02-10 04:01:50

回答

2

std :: String有一個名爲c_str()的函數,它爲您提供了一個指向內部c字符串的常量指針,您可以將它用於c函數。 (但要複印一份)

2

使用+對字符串:

std::string newstring = std::string(TotalRam) + str; 

如果你想把它當作一個char[]相反,你需要分配的內存在堆或疊第一。之後,strcatsprintf是可能的選項。

0

性能,這樣做:

char ministring[2] = {0,0}; 
// use ministring[0] as your char, fill it in however you like 
strcat(ministring,str); 

的字符數組被堆棧分配所以它是非常快,並且第二炭與作爲字符串終止子的零種行爲的值,使得等strcat的功能將把它當作'c'字符串。

+0

幾乎正是我把+1試圖 – H4cKL0rD 2010-02-10 03:50:06

+2

我想你已經上了的strcat你的參數倒退。如果你的意思是你寫它的方式,那麼這將導致堆棧損壞,因爲str會被附加到你的堆棧分配的ministring。如果str足夠長,則會損壞堆棧中小於字符串的其他值。 (包括返回地址指針,導致緩衝區溢出附加,可以很容易地用於遠程代碼執行。) – SoapBox 2010-02-10 03:57:32

+0

我的不好,我很久沒有使用C字符串函數了。 – 2010-02-10 04:01:12

2

不能追加一個字符串爲char,你只能在一個字符串(如果使用的是C字符串函數或一個char *)添加到字符串。在你的例子中,你必須將(字符型)TotalRam複製到某種類型的字符串中,或​​者是C++ std :: string,或者使用char [2]來保存它,並且需要終止NULL字符。然後,您可以使用C++字符串與C++函數或char [2]與strcat和朋友。