C++之輸入與輸出

文章目錄

  • C++ 輸入輸出 (I/O) 詳解
    • 基本 I/O 組件(input / output)
    • 基本輸出 (cout)
    • 基本輸入 (cin)
    • 格式化輸出
    • 文件 I/O
    • 字符串流
    • 常見 I/O 方法比較
    • 錯誤處理
    • 其他
      • 保留小數

C++ 輸入輸出 (I/O) 詳解

C++ 使用標準庫中的 iostream 庫來處理輸入輸出操作。主要包括以下幾個關鍵組件:

基本 I/O 組件(input / output)

  1. 標準流對象

    • cin - 標準輸入流 (通常關聯鍵盤)
    • cout - 標準輸出流 (通常關聯顯示器)
    • cerr - 標準錯誤流 (無緩沖)
    • clog - 標準日志流 (有緩沖)
  2. 頭文件

    #include <iostream>  // 基本I/O操作
    #include <iomanip>   // 格式化輸出
    

基本輸出 (cout)

#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;  // 輸出字符串并換行std::cout << "Number: " << 42 << "\n";      // 輸出多個值,使用\n換行return 0;
}

基本輸入 (cin)

#include <iostream>int main() {int age;std::cout << "Enter your age: ";std::cin >> age;  // 從鍵盤讀取輸入std::cout << "You are " << age << " years old.\n";return 0;
}

格式化輸出

使用 <iomanip> 中的操縱符:

#include <iostream>
#include <iomanip>int main() {double pi = 3.141592653589793;// 設置精度(保留4位有效數字)std::cout << std::setprecision(4) << pi << std::endl;  // 輸出 3.142// 固定小數位數(保留兩位小數)std::cout << std::fixed << std::setprecision(2) << pi << std::endl;  // 輸出 3.14// 設置寬度和對齊std::cout << std::setw(10) << std::left << "Hello" << std::setw(10) << "World" << std::endl;return 0;
}

文件 I/O

使用 <fstream> 頭文件:

#include <iostream>
#include <fstream>int main() {// 寫入文件std::ofstream outFile("example.txt");if (outFile.is_open()) {outFile << "This is a line.\n";outFile << "This is another line.\n";outFile.close();} else {std::cerr << "Unable to open file for writing.\n";}// 讀取文件std::ifstream inFile("example.txt");std::string line;if (inFile.is_open()) {while (getline(inFile, line)) {std::cout << line << '\n';}inFile.close();} else {std::cerr << "Unable to open file for reading.\n";}return 0;
}

字符串流

使用 <sstream> 頭文件:

#include <iostream>
#include <sstream>int main() {// 字符串轉其他類型std::string str = "123.45";std::istringstream iss(str);double num;iss >> num;std::cout << "Number: " << num << std::endl;// 其他類型轉字符串std::ostringstream oss;oss << "The answer is " << 42;std::string result = oss.str();std::cout << result << std::endl;return 0;
}

常見 I/O 方法比較

方法描述適用場景
cin >> var格式化輸入讀取基本類型數據
getline(cin, str)讀取一行讀取字符串,包含空格
cin.get()讀取單個字符需要逐個字符處理
cin.read()讀取原始數據二進制數據讀取
cout <<格式化輸出基本輸出
cout.write()原始數據輸出二進制數據輸出

錯誤處理

#include <iostream>int main() {int number;std::cout << "Enter an integer: ";while (!(std::cin >> number)) {std::cin.clear();  // 清除錯誤狀態std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  // 忽略錯誤輸入std::cout << "Invalid input. Please enter an integer: ";}std::cout << "You entered: " << number << std::endl;return 0;
}

這些是 C++ 中輸入輸出的基本概念和常用方法。根據具體需求,可以組合使用這些技術來實現復雜的數據輸入輸出操作。

其他

保留小數

使用setprecision()/cout.precision()之后,如果不在修改精度,則之后所有的數據輸出都是按照設置的精度來輸出(fixed同理)

fixed 操作符可能最重要的還是當它與 setprecision 操作符一起使用時,setprecision 即可以以一種新的方式顯示。它將指定浮點數字的小數點后要顯示的位數,而不是要顯示的總有效數位數。而這通常正是我們想要的。

表示浮點輸出應該以固定點或小數點表示法顯示:
#include<bits/stdc++.h>
using namespace std;
int main(){double a;int b;cin>>a>>b;cout<<setprecision(3)<<fixed<<a/b<<endl<<(b<<1);return 0;
}

1,浮點數格式化輸出:

  • setprecision(3):設置輸出精度為3位有效數字
  • fixed:使用固定小數表示法(小數點表示法)
  • 組合使用fixed和setprecision(3)表示保留小數點后3位

2, 位運算:

  • b << 1:將b的二進制表示左移1位,相當于乘以2

3, 輸入輸出:

  • 輸入兩個數a和b ?
  • 第一行輸出a/b的結果(保留3位小數)
  • 第二行輸出b左移1位的結果

4,注意事項

  1. 當b為0時,a/b會導致浮點數除以零錯誤
  2. fixed會強制以小數形式顯示,即使結果是整數(如4.000)
  3. << 在C++ 中既是流插入運算符也是位左移運算符,注意上下文區分

歡迎給出意見或者相關內容推薦🌹🌹🌹
未完待續…………

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76180.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76180.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76180.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

流動的夢境:GPT-4o 的自回歸圖像生成深度解析

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

eBay多賬號安全運營技術體系:從環境隔離到智能風控的工程化實踐

一、多賬號運營風險模型解析 &#xff08;技術化重構關聯檢測機制&#xff09; 環境指紋維度&#xff1a; 瀏覽器指紋參數&#xff1a;Canvas/WebGL渲染特征&#xff08;差異度要求≥98%&#xff09; 設備指紋參數&#xff1a;GPU型號/聲卡特征&#xff08;識別準確率92%&…

Vue 3 模板引用(Template Refs)詳解與實戰示例

Vue 3 模板引用&#xff08;Template Refs&#xff09;詳解與實戰示例 引言 在 Vue 開發中&#xff0c;通常推薦使用 響應式數據 (ref 和 reactive) 進行數據綁定&#xff0c;而不是直接操作 DOM。但是&#xff0c;在某些情況下&#xff0c;我們確實需要訪問某個組件或 DOM 元…

《Operating System Concepts》閱讀筆記:p495-p511

《Operating System Concepts》學習第 44 天&#xff0c;p495-p511 總結&#xff0c;總計 17 頁。 一、技術總結 1.cache (1)定義 A cache is a region of fast memory that holds copies of data. (2)cache 和 buffer 的區別 The difference between a buffer and a cac…

通過Spring Boot集成WebSocket進行消息通信

文章目錄 通過Spring Boot集成WebSocket進行消息通信1. 創建 Spring Boot 項目2. 添加 WebSocket 依賴3. 配置 WebSocket4. 創建 WebSocket 處理器5. 創建控制器&#xff08;可選&#xff09;6. 前端頁面測試7. 運行項目注意事項 通過Spring Boot集成WebSocket進行消息通信 1.…

rust服務應用開發框架

原文鏈接:https://i68.ltd/notes/posts/20250313-rust-wasm-fw/ spin 開源開發工具&#xff0c;用于構建和運行由 WebAssembly 提供支持的無服務器應用程序Spin 是一個框架&#xff0c;用于使用 WebAssembly 構建&#xff0c;部署和運行快速&#xff0c;安全和可組合的云端微…

迷茫的一周 2025/3/28

Java篇 在Java中&#xff0c;以下數據類型中,需要內存最多的是(long) - A選項byte&#xff1a;占用1個字節&#xff08;8位&#xff09; - B選項long&#xff1a;占用8個字節&#xff08;64位&#xff09; - C選項Object&#xff1a;Object本身是一個引用&#xff0c;在32位JVM…

Elasticsearch 的搜索功能

Elasticsearch 的搜索功能 建議閱讀順序&#xff1a; Elasticsearch 入門Elasticsearch 搜索&#xff08;本文&#xff09;Elasticsearch 搜索高級Elasticsearch 高級 1. 介紹 使用 Elasticsearch 最終目的是為了實現搜索功能&#xff0c;現在先將文檔添加到索引中&#xff0c…

docker鏡像拉取失敗

hub.docker.com中提供的docker pull命令在服務器拉取鏡像時報錯Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 這個錯誤通常表明Docker客戶…

EFISH-SBC-RK3576 + 5G模組:無線工業相機與分布式AI質檢?

在智能制造與倉儲物流場景中&#xff0c;傳統有線工業相機存在部署成本高、靈活性差等痛點。?eFish-SBC-RK3576? 通過 ?5G無線傳輸 分布式NPU協同?&#xff0c;實現跨產線、跨工廠的AI質檢系統&#xff0c;檢測效率提升300%&#xff0c;布線復雜度降低90%。 ?1. 系統架構…

AI提示詞編寫方法全解析

在人工智能日益融入生活的當下&#xff0c;如何巧妙編寫提示詞&#xff0c;成為充分發揮AI效能的關鍵。以下為您詳細介紹幾種實用的AI提示詞編寫方法。 角色扮演法&#xff1a;賦予AI獨特身份 角色扮演法旨在讓AI模擬特定角色。當我們渴望AI以歷史人物、虛擬角色的視角進行表…

【docker】docker應用舉例

# Docker創建python項目 ## 1. 準備 Dockerfile 首先,在項目根目錄下創建一個 Dockerfile,用于定義 Docker 鏡像的構建步驟。 # 使用官方 Python 鏡像作為基礎鏡像 FROM python:3.9-slim # 設置工作目錄 WORKDIR /app # 復制項目文件到容器中 COPY . /app # 安裝項目依賴…

【大模型】SpringBoot整合LangChain4j實現RAG檢索實戰詳解

目錄 一、前言 二、LangChain4j 介紹 2.1 什么是LangChain4j 2.2 LangChain4j 主要特點 2.3 Langchain4j 核心組件 三、RAG介紹 3.1 什么是RAG 3.2 RAG工作流程 3.2.1 補充說明 3.3 Embedding模型 3.3.1 RAG實際使用步驟 3.3.2 什么是Embedding 3.3.3 Embedding 技…

基于 Trae 的超輕量級前端架構設計與性能優化實踐

一、技術背景與選型動因 在單頁應用(SPA)復雜度指數級增長的今天&#xff0c;傳統框架在千級列表渲染場景下普遍存在首屏延遲(>1.5s)、內存占用過高(>200MB)等問題。基于對 Webpack Bundle Analyzer 的長期觀察&#xff0c;我們發現核心問題集中在&#xff1a; ? 類組件…

dotnet core web api linux主機公網發布

效果: 發布流程: 創建一個ASP.NET Core Web API 工程 輸入工程名 選擇框架版本為.net 9.0及選擇配置HTTPS和啟用OPENAPI 啟動調試 確認證書

WPS宏開發手冊——JSA語法練習

目錄 系列文章3、JSA語法練習3.1、運算練習3.2、比較練習3.3、if else練習3.4、for 練習3.5、字符串、數組方法練習3.6、語義轉編程練習題 系列文章 使用、工程、模塊介紹 JSA語法 JSA語法練習題 Excel常用Api 后續EXCEL實戰、常見問題、顏色附錄&#xff0c;持…

計算機網絡面經(一)

以下為個人總結&#xff0c;圖源大部分會來自網絡和JavaGuide 網絡分層模型 OSI七層模型 各層的常見協議 應用層 用戶接口 HTTP, FTP, SMTP, DNS表示層 數據格式轉換 SSL/TLS, JSON, JPEG會話層 會話管理 NetBIOS, RPC, SSH傳輸層 端到端通信 TCP, UDP, QUIC網絡層 路由尋址…

《JVM考古現場(十四):混沌重啟——從量子永生到宇宙熱寂的終極編譯》

開篇&#xff1a;熵火燎原量子遞歸的終極突圍 "當《誅仙劍陣》的時空凍結算法遭遇量子遞歸暴走&#xff0c;當Project Omega的熱寂代碼在JVM的十三維堆內存中坍縮&#xff0c;此刻我們即將撕開歸墟晶壁&#xff0c;直面從玻爾茲曼大腦到馮諾依曼架構的終極對決&#xff0…

【django】2-2 (django配置) 數據庫配置、緩存配置

文章目錄 5 數據庫配置5.1 常用配置項5.2 數據庫配置示例5.3 其它數據庫配置選項 6 緩存6.1 常用配置項6.2 內置的緩存后端6.3 緩存配置示例6.4 緩存中間件的配置 創建django項目后&#xff0c;會自動生成初始的項目文件如下&#xff1a; manage.py # 管理django項目…

【博客】使用GithubAction自動同步obisidian和hexo倉庫

使用Github Action自動同步obisidian和hexo倉庫&#xff0c;避免手動操作。 本文首發于?慕雪的寒舍 1. 煩惱 先來說說慕雪現在的筆記和博客是怎么管理的吧&#xff0c;我正在使用兩套筆記軟件 思源筆記&#xff1a;私密性高一些&#xff0c;不是博客的筆記都在這里面。由于思…