2016-12-21 9 views
0

私はC++用の本を書いています。cinの文字をフリーストアに割り当てる配列に読み込むプログラムを作る必要があります。 さらに、感嘆符が入力されるまで個々の文字を読むように求められます。 私はポインタの新人です、そして、私はこれを行う方法を知らない。 また、std :: stringの使用を禁じていて、メモリの枯渇を気にしないように指示します。 助けてください!フリーストアに割り当てられた配列の読み込み文字

+1

本書ではこれを行う方法についても説明していませんか? – jtbandes

+0

動的配列については、std :: vector <>を使用することができます。文字を読む、チェック!マークを付けて、ベクトルにエントリを入れてください –

+0

http://www.cplusplus.com/reference/istream/istream/getline/とhttp://www.cplusplus.com/reference/istream/istream/tellg/ – macroland

答えて

2

一度に1ステップ。感嘆符が読み込まれるときに読み取りを停止するには

unsigned int chars_remaining = SIZE; 
char * p = ptr_char_array; 
while ((chars_remaining > 0) && (cin >> *p++)) 
{ 
    --chars_remaining; 
} 

char * ptr_char_array = new char[SIZE]; 

は、配列に文字を読む:

char c; 
while ((chars_remaining > 0) && (cin >> c)) 
{ 
    if (c == '!') 
    { 
    break; 
    } 
    *p = c; 
    ++p; 
    --chars_remaining; 
} 

自由ストア上のアレイを割り当て

より良い方法は、std::string,std::vectorおよび012を使用することです。、私はOPの研究として残します。

+0

ありがとうロット...あなたはまた、なぜ私にメモリの枯渇に気を使わないように言われたのか教えてもらえますか? – fleshbender

+0

私は今日、ダイナミックアレイの読み込みについて、今日の投稿に答えました。つまり、配列がいっぱいになると配列を再割り当てします。 「メモリ枯渇」を明確にしてください。 –

関連する問題