C++處理輸入字符串并轉(zhuǎn)為數(shù)組的操作
最近在做題的時候在處理輸入時遇到一個令人頭疼的問題,今天解決了和大家分享一下:
比如題目要求的輸入為一行數(shù),數(shù)與數(shù)之間用空格間隔開,數(shù)的個數(shù)未知,數(shù)也有正有負(fù):
11 -2 65 7
那么如何把這個輸入保存到數(shù)組a中,且數(shù)組a中的值為a[0]=11,a[1]=-2,a[3]=65,a[4]=7呢?
先看代碼:
#include <iostream> #include <stdio.h> using namespace std; int main() { int a[20]; int i = 0; cin>>a[i++]; while(getchar()!='\n') { cin>>a[i++]; } for(int j=0;j<i;j++) { cout<<"a["<<j<<"]:"<<a[j]<<endl; } }
關(guān)于getchar()函數(shù):
該函數(shù)返回輸入流的每一個字符,在這段程序中當(dāng)該函數(shù)判斷當(dāng)前字符不是換行符時,則輸入流cin向數(shù)組寫入一個數(shù)字。
有的同學(xué)可能會問為什么這里會寫一整個數(shù)字而不是一個字符,這里說一些我的見解,我們平時使用cin時,一般都是這樣使用的:cin>>a>>b,在控制臺實際輸入時a和b是以空格分開的,也就是說cin會一直讀入字符直到遇到空格或換行符,那么我們的程序里的cin也就一直讀入字符了。
其他問題:
該程序可以處理以任何字符分隔數(shù)字的字符串,包括冒號分號甚至小數(shù)點(diǎn),目前還不知原因為何
補(bǔ)充:C++輸入未知長度字符串存入數(shù)組
記錄C++學(xué)習(xí)過程的問題,方便以后自己查看
int main() { string str; char temp; while((temp=cin.get())!='\n') { str +=temp; } const int LEN =str.length(); char* dest = new char[LEN]; for(int i = 0;i<LEN;i++) //將字符串?;卮娴阶址麛?shù)組中答 { dest[i]=str[i]; cout<<dest[i]; } delete 【】dest; return 0; }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
C++ 關(guān)于 CMFCPropertyGridCtrl 的使用方法
這篇文章主要介紹了C++ 關(guān)于 CMFCPropertyGridCtrl 的使用方法的相關(guān)資料,需要的朋友可以參考下2015-06-06C語言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問題探究
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問題,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路2023-01-01C++基礎(chǔ)學(xué)習(xí)之利用兩個棧實現(xiàn)一個隊列
這篇文章主要給大家介紹了關(guān)于C++基礎(chǔ)學(xué)習(xí)之利用兩個棧實現(xiàn)一個隊列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05VSCode (Visual Studio Code) V1.43.0下載并設(shè)置成中文語言的方法
Visual Studio Code是一款免費(fèi)開源的現(xiàn)代化輕量級代碼編輯器,支持語法高亮、智能代碼補(bǔ)全、自定義熱鍵、括號匹配、代碼片段、代碼對比 Diff、GIT 等特性,這篇文章主要介紹了VSCode (Visual Studio Code) V1.43.0下載并設(shè)置成中文語言,需要的朋友可以參考下2020-03-03