2016-11-30 54 views
0

我想簡單的添加前綴字符串列表:C++ /升壓:應用前綴字符串列表

Input: "a, b, c, d, e" 
Output: ":a, :b, :c, :d, :e" 

是否已有了那種操作來實現任何Boost庫?添加前綴或者甚至將一個boost::format操作應用於字符串序列?

我已經在boost::algorithm::string圖書館上搜索過,但什麼也沒找到。當然,我可以簡單地用std::for_each或其他任何方式來解決它,但我想知道是否有任何已經制作的東西。

+0

如何存儲這些字符串?它是一個列表? – Rama

+0

'std :: vector '實際上,'boost'和'std'只考慮範圍或迭代器,所以我認爲特定的容器在這裏並不重要。 –

+1

你的輸入是你的例子中的一個字符串還是一個字符串的容器? – mkaes

回答

2

所以我會假設你有在它的字符串的容器而且每個字符串應該前綴: 也許是這樣的:

std::for_each(v.begin(), v.end(), [](auto& s){ s.insert(0, ":");}); 

,或者C++ 11是這樣的沒辦法:

string& (string::*FP)(size_t pos, const string& str) = &string::insert; 
std::for_each(v.begin(), v.end(), std::bind(FP, std::placeholders::_1, 0, ":")); 

這將與:你的容器前綴的每一個元素。

一個完整的例子,至少會產生在你的榜樣,輸出會是這樣:

int main() { 
    std::vector<std::string> v; 
    v.push_back("a"); 
    v.push_back("b"); 
    v.push_back("c"); 
    v.push_back("d"); 
    v.push_back("e"); 
    std::for_each(v.begin(), v.end(), [](auto& s){ s.insert(0, ":");});  
    for(const auto& s : v) 
    { 
     std::cout << s << ", "; 
    } 
    return 0; 
}