C++處理輸入字符串並轉為數組的操作
最近在做題的時候在處理輸入時遇到一個令人頭疼的問題,今天解決瞭和大傢分享一下:
比如題目要求的輸入為一行數,數與數之間用空格間隔開,數的個數未知,數也有正有負:
11 -2 65 7
那麼如何把這個輸入保存到數組a中,且數組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; } }
關於getchar()函數:
該函數返回輸入流的每一個字符,在這段程序中當該函數判斷當前字符不是換行符時,則輸入流cin向數組寫入一個數字。
有的同學可能會問為什麼這裡會寫一整個數字而不是一個字符,這裡說一些我的見解,我們平時使用cin時,一般都是這樣使用的:cin>>a>>b,在控制臺實際輸入時a和b是以空格分開的,也就是說cin會一直讀入字符直到遇到空格或換行符,那麼我們的程序裡的cin也就一直讀入字符瞭。
其他問題:
該程序可以處理以任何字符分隔數字的字符串,包括冒號分號甚至小數點,目前還不知原因為何
補充:C++輸入未知長度字符串存入數組
記錄C++學習過程的問題,方便以後自己查看
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++) //將字符串保回存到字符數組中答 { dest[i]=str[i]; cout<<dest[i]; } delete 【】dest; return 0; }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。