我正在尋找解決方案來追加字符串與其他原語,並發現stringstream是最簡單的解決方案。不過,我想簡化流程,所以我想製作一個功能來緩解它的使用。如果你提出了連接的替代方法,我需要最終的結果是char *。我用了一個循環(i)與:如何使用stringstream作爲C++函數的參數?
std::stringstream ss;
ss << "test" << i;
char* name = new char[ss.str().size() + 1];//allocate
strcpy(name, ss.str().c_str());//copy and put (char*)c_str in name
所以輸出的東西鏈接test1test2test3 ...這是最合理的解決方案,我能鼓起。我試圖把它變成一個易於使用的功能,但遇到了問題。我想這樣做:
char* string_to_pointer(char* dest, std::stringstream* _ss) {
char* result = new char[_ss->str().size() + 1];
strcpy(result, _ss->str().c_str());
return result;
}
然後我可以這樣做:
std::stringstream ss;
ss << "test" << i;
char* name = string_to_pointer(name, &ss);
我很新的C++,這似乎是正確使用語法,但我遇到了運行時問題,並會歡迎解決方案,以便如何在不導致Boost的情況下輕鬆使用該功能。
你試過了嗎? 編輯:你的運行時問題是什麼? – lightandlight
爲什麼你需要做「string_to_pointer」轉換?你確定你想要最終的結果是'char *'嗎?如果它是最終的,那麼就不需要修改它了,所以也許const char *?這樣你可以繼續使用stringstream直到最後。 – mockinterface
string_to_pointer很奇怪:它不使用它的第一個參數。 – laune