8-gUJHttA242VwOeZ.png

C++中,你可以使用cout和cin进行格式化输出和输入。下面是几个示例,演示如何使用格式化控制符来控制输出和输入的格式。

格式化输出示例:

  • 输出浮点数时指定小数点位数:

      #include <iostream>
      #include <iomanip>
      
      using namespace std;
      
      int main() {
          double number = 123.45678;
          cout << fixed << setprecision(2) << number << endl; // 输出: 123.46
          return 0;
      }
  • 设置输出字段宽度:

      #include <iostream>
      #include <iomanip>
      
      using namespace std;
      
      int main() {
          int num1 = 123;
          int num2 = 45678;
          cout << setw(10) << num1 << setw(10) << num2 << endl; // 输出: "       123     45678"
          return 0;
      }

    格式化输入示例

  • 从用户输入中读取整数:

      #include <iostream>
      
      using namespace std;
      
      int main() {
          int num;
          cout << "请输入一个整数: ";
          cin >> num;
          cout << "您输入的整数是: " << num << endl;
          return 0;
      }
  • 从用户输入中读取浮点数:

    #include <iostream>
    #include <iomanip>
    
      using namespace std;
      
      int main() {
          double num;
          cout << "请输入一个浮点数: ";
          cin >> num;
          cout << "您输入的浮点数是: " << fixed << setprecision(2) << num << endl;
          return 0;
      }

    不同数制输出格式

  • 十进制数制输出

      #include <iostream>
      
      using namespace std;
      
      int main() {
          int decimalNumber = 123;
          cout << "十进制数:" << decimalNumber << endl; // 输出:十进制数:123
          return 0;
      }
  • 八进制数制输出:

      #include <iostream>
      #include <iomanip>
      
      using namespace std;
      
      int main() {
          int octalNumber = 0123; // 八进制数,前面加0表示
          cout << "八进制数:" << oct << octalNumber << endl; // 输出:八进制数:123
          return 0;
      }
  • 十六进制数制输出:

      #include <iostream>
      #include <iomanip>
      
      using namespace std;
      
      int main() {
          int hexadecimalNumber = 0x1A; // 十六进制数,前面加0x表示
          cout << "十六进制数:" << hex << uppercase << hexadecimalNumber << endl; // 输出:十六进制数:1A
          return 0;
      }

    cin输入出错或者异常处理

    在C++中,可以使用异常处理机制来处理cin输入的错误或异常情况。通常,cin可能会在以下情况下引发异常或错误:

  • 非法输入数据类型: 用户输入的数据类型与期望的不匹配。
  • 流状态错误: 例如,当文件结束或文件读取错误时。
  • 输入缓冲区溢出: 用户输入的数据超出了程序预期的范围。
  • 以下是一些处理cin输入异常的方法,使用了C++的异常处理机制:

      #include <iostream>
      #include <stdexcept>
      
      using namespace std;
      
      int main() {
          int num;
      
          try {
              cout << "请输入一个整数: ";
              if (!(cin >> num)) {
                  throw runtime_error("输入无效"); // 抛出运行时异常
              }
      
              // 处理正常输入
              cout << "您输入的整数是: " << num << endl;
          } catch (const exception& e) {
              cerr << "发生异常: " << e.what() << endl;
              // 清除输入缓冲区
              cin.clear();
              cin.ignore(numeric_limits<streamsize>::max(), '\n');
          }
      
          return 0;
      }

    在上述示例中,我们使用了try和catch块来处理异常情况。如果用户输入的不是整数,cin会抛出一个异常,然后我们在catch块中捕获并处理异常,输出错误消息并清除输入缓冲区。

    在异常处理中,你可以采取适当的措施,例如重新请求用户输入、输出错误消息、记录错误等,以便更好地处理cin输入引发的异常。

    请注意,异常处理是一种处理输入错误的一种方法,但不是唯一的方法。你还可以使用其他方式来验证和处理输入,根据具体需求来选择最合适的方法。

标签: none