C++字符串的行輸入

1、字符串的輸入

????????下面用一個真實的示例來進行演示:

#include<iostream>
#include<string>int main()
{using namespace std;const int ArSize = 20;char name[ArSize];char dessert[ArSize];cout << "Enter your name:\n";cin >> name;cout << "Enter your favorite dessert name:";cin >> dessert;cout << endl;cout << "I have some delicions " << dessert << " for you ," << name <<"\n";return 0;}

這里的輸出結果是:

Enter your name:
Alistair Dreeb
Enter your favorite dessert name:
I have some delicions Dreeb for you ,Alistair

聰明的小伙伴肯定發現了,這里我們并沒有輸入dessert,而最后一句直接輸出了dessert,這就是cin在處理字符串的缺陷。因為cin手動輸入時,我們不能輸入空字符,那么cin就要用其他的方式來判斷結尾,所以cin就是用空白(空格,制表符和換行符)來判斷的。在第一個輸入時Alistair作為第一個字符串被放進了輸入流中,而Dreeb被當做第二個字符串放入輸入流中,因此編譯器是將Dreeb當做了dessert的值,所以直接跳過了dessert的輸入。這就是其中的原理。

2、每次讀取一行字符輸入

? ? ? ?在我們生活中,不可能每次都只是輸入一個單詞,比如我們想輸入一個城市名New York或者是San Paulo,這些單詞中間都有空格,那我們應該怎樣輸入這些字符串呢?這里要用到兩個相關的函數,分別是getline()函數和get()函數,兩個函數都是用來讀取一行字符輸入的,但是用法卻不相同,我們先來講getline()函數。首先,getline()函數是來自于istream文件中的一個類函數,通過cin對象進行使用,它有兩個參數一個是char數組的名稱,另一個則是將要輸入字符串的大小,例如:cin.getline(name,19),這樣可以讀取整行的字符串輸入(注意輸入字符串的字符數不能超過參數所給定的數量),當編譯器遇到換行符時,會自動停止讀取。另一個函數get()函數與getline()函數的使用方法相同,參數也是相同的,但是唯一不同的是,get()函數會保留換行符,例如:

cin.get(name1,19);

cin.get(name2,19);

此時,編譯器只能讀取到第一個函數的字符串,而第二個函數只能讀取到換行符 ,導致name2為空白,那么我們應該如何來消除這個缺陷呢,剛好這里有個get()函數變體,它不需要參數,可以讀取換行符,從而消除缺陷,即:

cin.get(name1,19);

cin.get();

cin.get(name2,19);

這樣就可以讀取第二個字符串常量了。這里還有一個變式,就是cin.get(name1,19).get(),這樣與getline()函數的作用相同。

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

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

相關文章

征服分布式系統:阿里云 Linux 多機互聯與資源共享實戰指南

征服分布式系統&#xff1a;阿里云 Linux 多機互聯與資源共享實戰指南 文章目錄 征服分布式系統&#xff1a;阿里云 Linux 多機互聯與資源共享實戰指南一、分布式系統架構概述二、阿里云網絡基礎架構解析三、多機互聯基礎配置1. 環境準備2. 網絡連通性測試3. SSH 密鑰認證配置 …

AI三步診斷心理:比ChatGPT更懂人心

用人工智能(大語言模型)輔助心理治療的研究 解決心理治療中專業人員不足的問題,提出了一種叫“思維診斷”(DoT)的方法,讓AI通過三個步驟來識別患者的“認知扭曲”(也就是負面、不合理的思維模式)。 背景:心理治療的困境 全世界約八分之一的人有心理問題,但心理咨詢師…

C++【生存游戲】開發:荒島往事 第一期

字幕君已上線...... 副字幕君已上線...... 計數君已上線...... 彩色字幕君 ( 花了重金請來的 ) 已上線...... Doge智能系統已上線...... Doge:嗨嗨我又來了&#xff01; 觀眾們......已上線&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; OK LETS GO&am…

k8s強制刪除podpvpvc和nsnamespace

k8s如何強制刪除pod&pv&pvc和ns&namespace方法 namespace、pod、pv、pvc全部處于“Terminating”狀態時&#xff0c;此時的該名稱空間下的所有控制器都已經被刪除了&#xff0c;之所以出現pod、pvc、pv、ns無法刪除&#xff0c;那是因為kubelet 阻塞&#xff0c;有…

Python基礎--4--Python常用代碼示例

1、文件讀寫操作&#xff08;常用于日志處理、數據導入導出&#xff09; 1、代碼示例 &#xff08;1&#xff09;讀取文本文件內容 with open("data.txt", "r", encoding"utf-8") as f:content f.read()print(content)&#xff08;2&#xf…

單項循環鏈表及帶頭指針的鏈表

單項循環鏈表及其帶頭指針的鏈表 對于鏈表我們要仔細深入的學習它&#xff0c;為何呢&#xff0c;因為他是我們在后面學習非線性數據結構的基礎&#xff0c;像后面的樹&#xff0c;圖等結構都是由鏈表演變出來的&#xff0c;所以我們這篇博客繼續探究鏈表 帶頭指針的鏈表 我…

八股文——JAVA基礎:解釋下什么是面向對象?面向對象和面向過程的區別

面向對象和面向過程是編程的不同思想&#xff1a; 面向過程如c語言的編程形式&#xff0c;在編程時定義的是一個方法&#xff0c;然后后續執行只需要關注這個方法的作用&#xff0c;而不會將方法進行抽象&#xff0c;也就是只關注程序執行的過程細節。 面向對象如java&#x…

SuperMap iServer 關閉數據目錄(datacatalog)、地圖打印(webprinting)等服務

背景 漏洞掃描發現有部分低危 web 漏洞&#xff0c;項目又暫未使用數據目錄服務&#xff0c;所以最簡單的方案是直接關閉服務。 查閱文檔發現處理自動化服務可以修改webapps\iserver\WEB-INF\iserver-geoprocessing.xml 的 enable 屬性為 false 關閉&#xff0c;機器學習服務…

PyTorch 張量(Tensors)全面指南:從基礎到實戰

文章目錄 什么是張量&#xff1f;張量初始化方法1. 直接從數據創建2. 從 NumPy 數組轉換3. 基于現有張量創建4. 使用隨機值或常量 張量屬性張量操作設備轉移索引和切片連接張量算術運算單元素張量轉換 原地操作&#xff08;In-place Operations&#xff09;PyTorch 與 NumPy 互…

Maven是什么?

Maven是一個流行的Java項目管理和構建工具&#xff0c;主要用于自動化項目構建、依賴管理和項目文檔生成等工作。以下是對它的簡單介紹&#xff1a; 核心功能 依賴管理&#xff1a;自動管理項目所需的第三方庫&#xff08;如JAR包&#xff09;&#xff0c;通過在配置文件中聲…

etcd教程-快速入門使用(截圖實操)集群搭建 + 原理解釋

大家好&#xff0c;我是此林。 etcd 是一個高可用的鍵值對存儲系統&#xff0c;常用于分布式系統中保存配置、服務發現和協調信息。它是 CNCF 旗下的項目之一&#xff0c;也是 Kubernetes 的核心組件之一&#xff0c;用來存儲集群狀態。 可以說&#xff0c;云原生場景下經常使…

OpenSSL 混合加密

openssl 中文網&#xff1a; https://www.openssl.net.cn/ 目錄 對稱加密特點常見算法案例&#xff08;使用 AES&#xff09; 非對稱加密特點常見算法案例&#xff08;使用 RSA&#xff09; 混合加密場景加密&#xff08;使用 AES&#xff09;解密 總結 對稱加密 特點 加密和解…

AI驅動的DevOps運維與云服務部署自動化

引言 當前&#xff0c;云計算和DevOps實踐讓開發者能夠管理成百上千臺服務器和容器&#xff0c;但隨之而來的運維復雜度也急劇提升。運維工程師經常需要部署多環境應用、維護大規模云主機、排查集群故障等任務。這些任務不僅涉及繁瑣的腳本編寫和命令行操作&#xff0c;還需要對…

Spring Boot動態數據源切換:優雅實現多數據源管理

在復雜的企業應用中&#xff0c;多數據源管理是常見需求。本文將介紹如何基于Spring Boot實現優雅的動態數據源切換方案&#xff0c;通過自定義注解和AOP實現透明化切換。 核心設計思路 通過三層結構實現數據源動態路由&#xff1a; 1. 注解層&#xff1a;聲明式標記數據源 2…

如何挑選一款1588PTP時鐘同步服務器?

在當今數字化程度極高的時代&#xff0c;高精度時間同步對于眾多關鍵領域的高效、穩定運行起著決定性作用。PTP&#xff08;精確時間協議&#xff09;時鐘作為實現高精度時間同步的核心設備&#xff0c;其性能優劣直接關乎系統整體表現。挑選一款合適的 ptp網絡同步時鐘&#x…

Harmony狀態管理 @Local和@Param

深入理解ArkUI中的Param與Local裝飾器 引言 在ArkUI的狀態管理系統中&#xff0c;Param和Local是兩個核心裝飾器&#xff0c;它們分別用于處理組件間的數據傳遞和組件內部狀態管理。本文將詳細介紹這兩個裝飾器的使用場景、特性差異以及最佳實踐。 Param裝飾器&#xff1a;組…

物聯網攝像頭模塊的應用場景

一、智慧城市治理 ?智能交通優化? ?動態信號控制?&#xff1a;杭州部署20萬物聯網攝像頭&#xff0c;實時分析車流密度并聯動1200個紅綠燈&#xff0c;早高峰通行效率提升40%。 ?違規行為識別?&#xff1a;搭載GB/T28181協議的攝像頭AI抓拍交通違章&#xff0c;車牌識…

k8s Ingress、Service配置各樣例大全

目錄 壹、k8s Ingress 樣例大全&#x1f527; 一、基礎路由與 TLS 終止&#x1f504; 二、高級路由控制1. **URL 重寫**&#xff08;適用后端服務路徑與入口路徑不一致&#xff09;2. **多路徑路由到不同服務** &#x1f6a6; 三、流量治理策略1. **金絲雀發布&#xff08;灰度…

領域驅動設計(DDD)【10】之DDD戰術模式:工廠模式與表意接口模式

文章目錄 引言&#xff1a;DDD戰術模式的重要性一、DDD中的工廠模式1.1 工廠模式的核心概念1.2 工廠模式的三種實現方式1.2.1 簡單工廠方法1.2.2 工廠類1.2.3 抽象工廠模式 1.3 工廠模式的適用場景1.4 實際案例&#xff1a;電商訂單系統 二、表意接口模式2.1 表意接口2.2 表意接…

鴻蒙ArkTS---登錄邏輯,數據持久化,ArkUI,網絡請求等基礎內容記錄

該內容是在【博學谷】學習過程中的代碼記錄&#xff0c;如有任何問題請與作者聯系。 也歡迎同在學習鴻蒙開發的小伙伴的留言&#xff0c;一同學習&#xff0c;一同進步。 功能實現&#xff08;只記錄代碼&#xff0c;沒有相關配置&#xff0c;跑不起來&#xff09;&#xff…