我試圖編寫一個方法,將參數使用>>
運算符作爲參數類似於std::cin
但我不知道如何。是否有可能創建這種類型的方法,如參數,將其正確轉換(例如,將所有整數轉換爲字符串等),然後保存到std :: string變量中?我真的會贊同所有的幫助,也許一些基本的例子?運算符<<在用戶定義的方法
這裏是我想如何運行函數的一個例子:
int i = 0;
myMethod << "some text" << i << "moar text";
內部的方法,我想利用這些參數,並存儲在一個字符串。
編輯:我會盡力解釋這個應用程序是關於什麼:我正在嘗試製作一個Clogger sigleton類,它將用於將日誌保存到文件中。通過這種結構,我可以在代碼中的任何地方撥打*CLogger::instance() << "log stuff";
,那就行了。感謝來自這個話題的答案,我已經談到這一點。問題是我使用的每個operator<<
,那麼該對象將被調用。所以,如果我做* CLogger ::實例()< < 「登錄的東西」 < < 「更多的東西」 < < 「更」;`這個方法將被稱爲3次(?):
template<typename T>
CLogger& operator<<(const T& t)
{
...
return *this;
}
這對我並不好,因爲我打算在每個日誌行之前和之後添加一些文本。例如,我總是希望在添加時間之前和std::endl
之後。下面我給的不是獲取的例子:
[00:00] log stuff more stuff even more
我會得到:
[00:00] log stuff
[00:00] more stuff
[00:00] even more
所以我做出了嘗試通過改變這樣的methiod刪除此行爲:
template<typename T>
CLogger& operator<<(const T& t)
{
ostringstream stream;
stream << t;
m_catString += stream.str();
if (stream.str() == "\n")
{
push_back(m_catString);
m_catString.clear();
}
return *this;
}
這樣,如果我在末尾添加"\n"
,程序就知道何時推送新的日誌行。它幾乎可以,因爲我敢打賭我會忘記添加這個。有沒有更聰明的方法?
有成千上萬的教程和關於此的問題,每本介紹性的C++書都涵蓋了它。如果您遇到困難,請嘗試閱讀並返回。 – user657267
也修復您的標題。您在那裏有錯誤的操作員。 – juanchopanza
@juanchopanza謝謝你的提示,我修好了。問題是這個主題不是那麼基本,我發現很難找到任何關於它的直接信息。另外,C++書籍並沒有真正地說過多。 – Bremen