2013-05-16 20 views
0

我要填寫與英文字母矢量裝滿字母字符的向量。所以我寫了以下內容:使用std :: generate_n

#include <iostream> 
#include <algorithm> 
#include <vector> 
#include <iterator> 

char i='a'; 
char f(){return i++;}; 

int main() 
{ 

    std::vector<char> lol(24); 

    std::generate_n(lol.begin(),lol.size(),f); 

    std::copy(lol.begin(),lol.end(),std::ostream_iterator<int>(std::cout,",")); 

} 

但std :: copy打印97,98,99...字母的ASCII代碼。我怎樣才能解決這個問題?

+3

順便說一句,擡頭'的std :: iota',並認識到信不在字符執行集中必須是連續的。 – chris

+1

@chris非常感謝你,用這種方式很容易'std :: iota(lol.begin(),lol.end(),'a');'' –

回答

1

更改模板專業化爲char:std::copy(lol.begin(),lol.end(),std::ostream_iterator<char>(std::cout,","));

2

你ostream_iterator是<int>,而不是<char> - 嘗試將其更改爲<char>

相關問題