2015-10-20 191 views
2

我在C++中的程序中,所有的輸入到程序具有下劃線(「_」)代替空格。我試圖替換所有空格('')的下劃線。我試過使用std :: replace,但是我一直在收到錯誤,我不知道我錯在哪裏。c + +替換字符的所有出現在字符串

int main() 
{ 
    string j = "This_is_a_test"; 

    j = std::replace(j.begin(), j.end(), '_', ' '); 

    // I'm trying to get: This is a test from 'j', 
} 

這回,當我嘗試編譯錯誤:

轉換,從void' to non-scalar type的std :: basic_string的,性病::分配器>」要求

+1

也許讀了一些'的std :: replace'文檔? – juanchopanza

+0

加一:如果你的正常語言是Java,這是forgiveable。 – Bathsheba

+0

@Bathsheba什麼? Java人不知道查找文檔?有趣... – juanchopanza

回答

3

std::replace作品的迭代器,所以它直接修改字符串,沒有必要的返回值。使用

std::replace(j.begin(), j.end(), '_', ' '); 

代替。

1

std::replace回報void

不能分配給voidstd::string

0

您只需要使用:

std::replace(j.begin(), j.end(), '_', ' '); 
cout<<j;