2016-02-19 157 views
-2
inline uint32_t code(uint32_t reg, Writer &writer) 
{ 
    uint32_t ZIEL, LHS, RHS; 
    if(op == OP_CONJ) { 
     LHS = lhs->code(reg, writer); 
     RHS = rhs->code(LHS + 1, writer); 
     reg = RHS + 1; 
     writer << OP_CONJ << reg << LHS << RHS; 

... 

有人可能會幫我理解什麼「< <」呢?C++:這個符號「<<」做什麼?

這裏是Writer結構:

struct Writer { 
    std::ostream &os; 
    inline Writer(std::ostream &_os) : os(_os) { } inline Writer &operator<<(uint32_t val) { 
     os.write((const char*)&val, sizeof(uint32_t)); 
     return *this; 
    } 
+1

這可能有所幫助:http://www.cplusplus.com/doc/tutorial/basic_io/ – jasonszhao

回答

1

在C++中,< <運營商在輸出流中使用:

你可以閱讀更多在這裏。

實例:

int number; 
cin >> number; 
cout << number; 

當插入到其使用std命名空間取入的數從鍵盤和打印該值到屏幕值的節目上面的代碼。在代碼您已發佈的<<效果

3

被定義爲

os.write((const char*)&val, sizeof(uint32_t)) 

其中os是已未示出的參考到一個流,在代碼初始化。

I.e.它會嘗試將值的原始字節寫入流中。

希望該流處於二進制模式,而不是文本模式,否則在某些系統(特別是Windows)中,數據可以在途中更改。

這是一個非常規使用<<。通常在C++ <<要麼是

  • 左移位(從C本義),或

  • 格式的輸出(與轉換爲文本),或

  • 添加值的集合。

有了這樣所示的代碼使用,利用所謂的Writer,人們所期望的格式化輸出,而不是二進制輸出。

0

它超載運營商<<。基本上,它是一個名稱爲<<的函數。當你調用使用<<此功能,C++將參數值設置這個符號旁:

writer << 8; 

是因爲如果你這樣調用該函數:

writer.<<(8); // Which won't run, but you get the idea 

其實,你可以調用操作員功能如下:

writer.operator<<(8);