[英]How to get how many chars were written in a ostream with the operator<<? Or how to read what was written?
1)
我想在運算符<<
重載,以便可以打印模板T的矩陣。
我想使用模板類的運算符<<
,並且要使其對齊,我必須知道所寫字符的數量,並在最后添加空格直到一定數量的字符。
但是,我不知道如何(如果可以)獲取所寫的字符串或所寫的字符數...
2)
我需要表演
cout << myobject
在幾次。 但是,此運算符<<花費大量時間,所以我只想保存一次並存儲其結果。 如何避免一遍又一遍地使用相同的方法?
有任何想法嗎?
第一個問題的解決方案。
std::ostringstream
編寫矩陣的元素。 std::ostringstream
獲取std::string
。 std::cout
或std::ofstream
創建最終輸出。 通常,您不能。 std::ostream
提供的最相似的東西是tellp
方法,該方法可以為您提供當前文件中的位置。 不幸的是,當您關心與最后一個換行符相關的位置時,這對您沒有幫助; 此外,在許多常見情況下,甚至沒有實現此方法(標准輸出“文件”中或套接字中的位置是什么?)。
至於提取所寫的內容,不再贅述。 底層的streambuf
不必保留這些數據-實際上,它甚至可以在寫入每個字符后立即刷新到底層的設備(這幾乎與無緩沖輸出一樣)。
這樣的事情會引起關注嗎?
│1 2 300 │
│1 463 6 │
│165 286 34457 │
│1.000000 0.000000 0.000000 │
│0.000000 1.000000 0.000000 │
│0.000000 0.000000 1.000000 │
│Hello World! This │
│is a test │
│to create spaces │
代碼很粗糙,您可能需要對其進行調整以補償32位和64位。
我認為您也可以對其進行修改,以便可以使用制表符,默認情況下它占用8個空格。
在線代碼示例: https : //rextester.com/IFXUFZ49322
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.