[英]Is there any way to make a char array without knowing what size it will be
char* a = new char[50];
這是為了學校作業。 我不允許使用字符串或向量或其他任何東西。 只是char數組。
可以說我想做cin >> a;
我不知道輸入的大小。 我該怎么把它放在char數組中? 以上僅適用於小尺寸輸入。
我應該這樣做嗎? char* a = new char[some_large_number];
或者,還有更好的方法?
我只能使用(動態)char數組。
編輯:輸入可以是任何字符串,如abcd
甚至somelongrandomsentecewithoutspsomelongrandomsentecewithoutspacessomelongrandomsentecewithoutspaces
這對於字符數組來說有點棘手:您需要做的是告訴cin
您不希望接收超過一定數量的字符(50個字符緩沖區為49,因為您需要空終止符)。 讀取完成后,檢查字符串的長度。 如果是49,則分配一個新的更大的字符串,將舊字符串復制到其中,然后繼續閱讀。 如果小於49,則已到達字符串的結尾。
您可以使用istream::get
將數據讀入緩沖區:
cin.get(a, 50); // You can specify an optional delimiter as a third parameter
請注意,您為長度傳遞50,並且get
將自動減1,因為它知道null終止符所需的空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.