0

300個のシンボルを含むバッファーを作成し、それを以下に説明する関数に渡す必要があります。

void printThis(char *info);

このバッファを生成するための最良の方法は何ですか?

これが良ければ:

char *buffer = new char()

次に、このバッファに文字を追加する方法は?次の方法は適切ではなく、アクセス違反が発生します。

for (int i=0; i<300;i++)
{
   sprintf(s,"%s",'a');
}
4

2 に答える 2

4
std::vector<char> buffer(300, 'a');

// I'm guessing that printThis wants a zero-terminated string
buffer.push_back(0);

printThis(&buffer[0]);

C ++ 11ライブラリを使用している場合は、buffer.data()より見栄えがよい場合があります&buffer[0]

本当に自分でメモリを管理したい場合(ヒント:そうではありません)、自動配列を作成します。

char buffer[300];

または動的配列:

char * buffer = new char[300];

// Don't forget to delete it, and hope than nothing threw an exception
delete [] buffer;
于 2012-09-07T14:59:40.280 に答える
0

これが良ければ:

そうではありません。本当に、本当に、そうではありません。それはバッファでさえありません。また、これは良い考えにさえ近いものではありません。

std::string s;
for(int i = 0; i < 300; i++)
    s.push_back('a'); // good job all round
std::cout << s; // 300*a. Why? Who knows?
printThis(s.c_str());
于 2012-09-07T15:06:44.180 に答える