まず最初に言いたいのは、私はC++
初心者で、これは宿題です。また、タイトルで正しい定義を使用しているかどうか確信が持てないので、間違っている場合は修正してください。
null で終わる文字配列の内容を格納する文字列クラスを作成する必要があります。入力の長さが 32 より大きい場合はヒープに格納し、そうでない場合はスタックに格納します。
今、私はコンストラクターで忙しいです:
#include "SString.h"
#include <iostream>
using namespace std;
SString::SString(const char* input)
{
// Determine length of input
int length = 0;
while (input[length] != '\0')
{
length++;
}
// Check for zero length
if (length == 0)
{
st_string[1] = ' ';
}
// Based on length, make heap string or use stack string
if(length > 32)
{
int i = 0;
p_string = new char[length];
while (i != length) //write string with input
{
p_string[i] = input[i];
i++;
}
}
else
{
int i = 0;
while(i != length) //write string with input
{
st_string[i] = input[i];
i++;
}
}
cout << "saved string:" << endl;
cout << p_string << endl;
}
ここで、メインで次のような文字列を使用して SimpleString を呼び出して、これをテストしました。
SString("test"); // or something
st_string
またはのいずれかに文字列を配置して機能しますp_string
が、どちらの場合も、格納された文字列の末尾にはより多くの(奇妙な未定義の)文字があります。したがって、「テスト」の場合は、test#54 などを取得します。
保存された char 配列が入力された char 配列よりも大きくなると思いますが、その理由はわかりません。