2018-12-23

anond:20181223184745

この辺になってくると初心者の人は面倒かな?

解説をつければかなりわかりやす

基本的な書き方


class mystring
{
public:
	char *buffer;
	mystring() 
	{
		buffer = (char*)"";
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer = new char[len + 47];
		strcpy(buffer, t);
	}

	void operator = (const mystring&src)
	{
		int len = strlen(src.buffer);
		buffer = new char[len + 47];
		strcpy(buffer, src.buffer);
	}

	mystring& operator + (const char*t)
	{
		int len = strlen(buffer);
		int len2 = strlen(t);
		char *buffer2 = new char[len + len2 + 47];
		strcpy(buffer2, buffer);
		strcpy(buffer2+len, t);
		buffer = buffer2;
		return *this;
	}
	mystring&  operator + (const mystring&src)
	{
		return ((*this) + src.buffer);
	}

};


STL化したもの

class mystringV
{
public:
	std::vector<char> buffer;
	mystringV()
	{
		buffer.resize(2);
		buffer[0] = ' ';
		buffer[1] = NULL;
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer.resize(len+1);
		strcpy(&buffer.at(0), t);
	}

	void operator = (const mystringV&src)
	{
		buffer = src.buffer;
	}

	mystringV& operator + (const char*t)
	{
		int len = strlen(&buffer.at(0));
		int len2 = strlen(t);

		buffer.resize(len + len2 + 47);

		strcpy(&buffer.at(0) + len, t);

		return *this;
	}
	mystringV&  operator + (const mystringV&src)
	{
		return ((*this) + &src.buffer.at(0));
	}

};

考察

様々な話はあるものSTLの方を使えば

いろんな事をプログラマにかわってライブラリがやってしまうということ

どうなんだろうね。

この辺は あまりしっかり おしえてもらえないところではある。

でも プロならみんな 知っている

  • 技としてはナイスだけど応用は厳しいよね const char *message = " Hello world\n"; for (int i = 0; i < 8; i++) { printf("%s", message + 8 - i); } サンプルとしては、使いにくい書き方

    • std::string space; for (int i = 0; i < 8; i++) { printf("%sHello world\n", space.c_str()); space += " "; } <は< 例外的に 効率は悪いけど こういうふうな書き方もできるC++

      • std::string space; for (int i = 0; i < 8; i++) { printf("%sHello world\n", space.c_str()); space += " "; } std::string space_org; for (int i = 0; i < 8; i++) { std::string space = space_org + " "; printf("%sHello world\n", space.c_str());...

        • 一気に並べてみる オーソドックスな書きかた int i;int space;for (int i = 0; i < 8; i++){ for (space = 0; space < i; space++) { printf(" "); } printf("Hello world\n");} すまん <は半角の<に置き換えてくれ(...

          • 初心者用 class mystring{public: char *buffer; mystring() { buffer = (char*)""; } void operator = (const char*t) { int len = strlen(t); buffer = new char[len + 47]; strcpy(buffer, t); } void operator = (const mystring&src) { int len = st...

            • この辺になってくると初心者の人は面倒かな? 解説をつければかなりわかりやすい 基本的な書き方 class mystring{public: char *buffer; mystring() { buffer = (char*)""; } void operator = (const char*t) { int len...

              • もしかしてスペース増田さんだったの?

                • ほいよ char format[50]; strcpy(format, "%0s%s"); for (int i = 0; i < 8; i++) { printf(format,"","Hello world\n" ); format[1]++; } スペース増田なら こんなかんじか?

          • マジレスしとくと、hello worldはもっと変態的な書き方ができたはずだぞ 特にC言語なら

      • 最近はVisual Studioは勉強用なら無料 https://visualstudio.microsoft.com/ja/ Visual Studioだって今は無料 簡単なプログラム printf("Hello world\n"); よく知られているやつ 簡単なプログラム 今回...

        • こういうの見せられていつも思うんだけど、 これで具体的に何ができるのかわからない テトリスとか作れんの?

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん