2017-08-14 54 views
-2

最長行的字符我想要做這樣的事情:智能的方式來獲得一些從ostringstream

std::ostringstream os; 
writingSomeDataToStream(os); 
const size_t width = getNumberOfCharsInLongestLine(os); 
const auto header = generateHeader("My diagnostic data", width); 
showText(header); 
showText(os.str()); 

如何編寫函數getNumberOfCharsInLongestLine一樣快,因爲它是可能的嗎?

+0

以何種方式最佳? *最簡單的*代碼將重複調用'getline'並記下每行的長度,保存最大值。 –

+1

你可以繼承'std :: ostringstream'並計算它正在被寫入的行長嗎? – Galik

+0

std :: getline需要istream,所以我不能使用它。 – Marcin

回答

0

我的分辨率是:

size_t getNumberOfCharsInLongestLine(const std::string& str) 
{ 
    size_t longest = 0; 
    size_t counter = 0; 
    for (auto c : str) 
    { 
     if (c == '\n') 
     { 
      if (counter > longest) 
       longest = counter; 
      counter = 0; 
     } 
     else 
      ++counter; 
    } 
    return longest; 
}