2011-08-17 86 views
2

我有兩個char *字符串和一個char *字面值,我需要將它們合併成一個std :: string。以下是我正在做的事情。它有效,但我不喜歡它的外觀(3行來完成它)。我想知道是否有更好的方法來做到這一點...將多個char *字符串格式化爲std :: string

std::string strSource = _szImportDirectory; 
strSource += "\\"; 
strSource += _szImportSourceFile; 

感謝您的幫助!

回答

8
std::string strSource = std::string(_szImportDirectory) + "\\" + _szImportSourceFile; 

是一個明顯的方法。

另一種方法是使用std::stringstream

std::stringstream s; 
s << _szImportDirectory << '\\' + _szImportSourceFile; 
std::string strSource = s.str() 

這是最靈活和維護的方式做到這一點,但它仍然需要三根線。

+1

感謝更新。我認爲如果我有大量的char *來組合(我經常這樣做),那麼stringstream解決方案就會變得更加高效。我現在要和那個一起去。現在我想到了,在stringstream中,我還可以將int和其他任何可發送給cout的東西都包含進去。這絕對是我想要的。 –

+0

是的你是對的,它更有效率。 –

+0

Seth,並沒有真正涉及到手頭的問題,但是如果我有一個stringstream並想從它得到一個char *,我可以以某種方式直接從stringstream獲取它嗎?或者我得到一個std ::字符串,然後c_str()呢? –

2

是這樣的嗎?

std::string str = std::string(_szImportDirectory).append("\\").append(_szImportSourceFile); 

PS:用正確的代碼

+0

順便說一句,看起來像Java的StringBuffer風格:) –

+0

這是一件好事。真相被告知,在C++中使用字符串時,我真的錯過了所有的Java便利。 (請降低評論影響我的聲譽?) –

+0

@John:評論不能低估。 – ybungalobill

相關問題