C ++:这是什么意思“<<”?

时间:2016-02-19 01:23:53

标签: c++

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;

...

有人可以帮我理解&#34;&lt;&lt;&#34;呢?

这是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;
    }

4 个答案:

答案 0 :(得分:3)

这是一个运营商!它可以翻译为“插入格式化输出”。

您可以在此处阅读更多内容:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

答案 1 :(得分:3)

在您发布的代码中,try { dir.Delete(true); } catch(Exception x) when (x is UnauthorizedAccessException || x is IOException) { Console.WriteLine("Error Removing the directory: {0}", dir.FullName); } 的效果定义为

<<

其中os.write((const char*)&val, sizeof(uint32_t)) 是对流的引用,在您尚未显示的代码中初始化。

即。它试图将值raw的字节写入流。

希望该流处于二进制模式,而不是文本模式,否则在某些系统(特别是Windows)上可以在途中更改数据。

这是os非常规使用。通常在C ++中<<

  • 左移(C的原始含义)或

  • 格式化输出(转换为文本)或

  • 为集合添加值。

使用类似于显示的代码,使用名为<<的东西,人们会期望格式化输出,而不是二进制输出。

答案 2 :(得分:1)

在c ++中,&lt;&lt;运算符用于输出流,而&gt;&gt;运算符用于输入流。

使用示例:

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

上面的代码插入到使用std命名空间的程序中时会从键盘中获取number的值并将该值打印到屏幕上。

答案 3 :(得分:0)

它正在重载运算符defaultConfig { //multiDexEnabled true } dependencies { //compile 'com.google.android.gms:play-services:8.4.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' compile 'com.google.android.gms:play-services-location:8.4.0' } 。基本上,它是一个名为<<的函数。当您使用<<调用此函数时,C ++会将参数设置为此符号旁边的值:

<<

就好像你这样调用了这个函数:

writer << 8;

实际上,您可以像这样调用运算符函数:

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