Skip to content

Zeroplex 生活隨筆

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

C++ 輸入無限長度的字串

Posted on 2007 年 2 月 15 日2021 年 3 月 12 日 By 日落 在〈C++ 輸入無限長度的字串〉中有 6 則留言

通常我們都是把字串存在一個陣列當中,但是我們卻不知到使用者到底會輸入多長的字串,只能宣告成一個非常大的陣列,這樣不但沒有解決問題而且還浪廢掉不少空間。

下面程式碼,是使用動態記憶體配置來即時更改陣列大小,當陣列不夠大時,變會將陣列長度增加 10。

//編譯器:Dev-C++ 4.9.9.2

#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

int main()
{
char *ch,*tmp;
char in;
int count=10,num=0;
// count紀錄陣列大小 num紀錄用掉的空間
int a;
ch = new char [count];
in = getch();
while( in != 'r' )
{
if( num >= count ) // 檢查陣列是否過小
{
tmp = new char [count+10]; //建立比原本大10的陣列
for(a=0;a<count;a++) //複製舊的陣列內容
tmp[a] = ch[a];
delete [] ch; // 刪除舊的資料
ch = tmp; // 繼承新的資料
count+=10;
}
num++;
ch[num-1] = in;
cout<<ch[num-1];

in = getch();
}
ch[num] = '';
cout<<endl<<endl<<ch<<endl<<endl;
system("pause");
return 0;
}

程式執行時,會先讀入字串直到使用者按下 Enter,接下來會把使用者輸入的字串重新再印出來。另外程式是使用 getch() 來讀取字串輸入,所以不必擔心作業系統給的暫存不夠大。

Tags:程式設計, 資訊學習

文章導覽

Previous Post: 跳頁選單
Next Post: Why Use Gmail ?

Comments (6) on “C++ 輸入無限長度的字串”

  1. Unknown表示:
    2007 年 3 月 14 日13:37

    conio.h不是標準函式庫哦~~

    回覆
  2. Unknown表示:
    2007 年 3 月 14 日13:40

    另外,在宣告陣列長度時使用變數
    不是非常好的做法
    似乎只有C99的編譯器會過

    抱歉,我應該一次回完的

    回覆
  3. 日落 Zero表示:
    2007 年 3 月 14 日13:51

    偷用其他函式庫被發現了 XD

    不用說也大概我要用 conio.h 裡面的哪個函式了

    我不太清楚其他編譯器會不會過,但是我用的 GCC 當編譯器,所以其他編譯器應該還OK。

    回覆
  4. yen3表示:
    2008 年 4 月 21 日15:44

    呵呵,或許是我多話了,改用C++ Style String 如何 ?

    回覆
  5. 日落 Zero表示:
    2008 年 4 月 21 日16:15

    哈,小弟不專業,受教受教!

    回覆
  6. 匿名表示:
    2009 年 1 月 6 日14:59

    真是受教了,真是及时雨啊,谢谢

    回覆

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 小提琴 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.

Go to mobile version