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。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: