📜  C++中的操纵器及示例

📅  最后修改于: 2021-05-30 13:05:32             🧑  作者: Mango

机械手正在提供有助于修改输入/输出流的功能。这并不意味着我们更改变量的值,它仅使用插入(<<)和提取(>>)运算符修改I / O流。

例如,如果要打印十六进制值100,则可以将其打印为:

cout<

机械手类型

有多种类型的操纵器:

  1. 没有参数的操纵器: IOStream库定义的最重要的操纵器在下面提供。
    • endl :在ostream中定义。它用于输入新行,并在输入新行后刷新(即,强制所有写在屏幕或文件中的输出)输出流。
    • ws :它在istream中定义,用于忽略字符串序列中的空格。
    • end :它也在ostream中定义,并且在输出流中插入一个空字符。它通常与std :: ostrstream一起使用,当相关的输出缓冲区需要为null终止以作为C字符串。
    • flush :它也在ostream中定义,并刷新输出流,即,它强制将所有输出写入屏幕或文件中。如果不进行刷新,则输出将相同,但可能不会实时显示。

      例子:

      #include 
      #include 
      #include 
      #include 
        
      using namespace std;
        
      int main()
      {
          istringstream str("           Programmer");
          string line;
          // Ignore all the whitespace in string
          // str before the first word.
          getline(str >> std::ws, line);
        
          // you can also write str>>ws
          // After printing the output it will automatically
          // write a new line in the output stream.
          cout << line << endl;
        
          // without flush, the output will be the same.
          cout << "only a test" << flush;
        
          // Use of ends Manipulator
          cout << "\na";
        
          // NULL character will be added in the Output
          cout << "b" << ends;
          cout << "c" << endl;
        
          return 0;
      }
      
      输出:
      Programmer
      only a test
      abc
      
  2. 带参数的操纵器一些操纵器与setw(20),setfill(’*’)等参数一起使用。这些都在头文件中定义。如果要使用这些操纵器,则必须在程序中包含此头文件。

    例如,您可以使用以下操纵器设置最小宽度,并用所需的任何字符填充空白:std :: cout << std :: setw(6)<< std :: setfill(’*’);

    • 中的一些重要操纵器是:
      1. setw(val):用于设置输出操作中的字段宽度。
      2. setfill(c):用于在输出流上填充字符“ c”。
      3. setprecision(val):将val设置为浮点值精度的新值。
      4. setbase(val):用于为数字值设置数字基值。
      5. setiosflags(flag):用于设置参数mask指定的格式标志。
      6. resetiosflags(m):用于重置由参数mask指定的格式标志。
    • 中的一些重要操纵器是:
      1. showpos:强制在正数上显示正号。
      2. noshowpos:强制不要在正数上写正号。
      3. showbase:表示数值的数字基数。
      4. 大写:将数字值强制为大写字母。
      5. nouppercase:强制将小写字母用于数字值。
      6. 固定:对浮点值使用十进制表示法。
      7. 科学的:它使用科学的浮点数表示法。
      8. hex:读取和写入整数的十六进制值,其作用与setbase(16)相同。
      9. dec:读取和写入整数的十进制值,即setbase(10)。
      10. oct:读取和写入整数的八进制值,即setbase(10)。
      11. 左:将输出调整到左侧。
      12. 右:将输出调整到右边。

    例子:

    #include 
    #include 
    using namespace std;
      
    int main()
    {
        double A = 100;
        double B = 2001.5251;
        double C = 201455.2646;
      
        // We can use setbase(16) here instead of hex
      
        // formatting
        cout << hex << left << showbase << nouppercase;
      
        // actual printed part
        cout << (long long)A << endl;
      
        // We can use dec here instead of setbase(10)
      
        // formatting
        cout << setbase(10) << right << setw(15)
             << setfill('_') << showpos
             << fixed << setprecision(2);
      
        // actual printed part
        cout << B << endl;
      
        // formatting
        cout << scientific << uppercase
             << noshowpos << setprecision(9);
      
        // actual printed part
        cout << C << endl;
    }
    
    输出:
    0x64
    _______+2001.53
    2.014552646E+05
    

参考:

  • http://www.cplusplus.com/reference/iomanip/
  • http://www.cplusplus.com/reference/ios/basic_ios/
  • http://www.cplusplus.com/reference/ios/
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”