0

私はC ++を初めて使用します。私は何日もこれを理解しようとしてきました-間違いなく簡単な解決策があるでしょうが、私はそれを見つけることができませんでした(多くのグーグルの後)!私の問題はこれです:

ファイルから文字を読み取り、配列に格納するメンバー関数を持つクラスを作成しようとしています。複数のオブジェクトを作成できるようにしたい (いくつあるかは不明 - ユーザーが決定)、それぞれに異なるファイルから取得した文字で満たされた独自の配列があります。それができたと思います。次に、メインでオブジェクトの配列にアクセスするにはどうすればよいですか?

私が取り組んでいるコードは長くて面倒ですが、これらの行に沿ったものです (この場合、char.txt には単に '12345' が含まれています):

#include <iostream>
#include <fstream>

using namespace std;

class Something{

public:
    void fill_array(char array_to_fill[]){
        char next;
        ifstream input;
        input.open("chars.txt");
        input.get(next);
        while(!input.eof())
        {
            for(int i = 0; i < 6; i++)
            {
            array_to_fill[i] = next;
            input.get(next);
            }
        }
    }
};

int main()
{
    Something* something = new Something[1];
    char array_to_fill[5];

    something->fill_array(array_to_fill);

    //I'd like to be able to access the array here; for example - to cout the array.

    return 0;
}

a) 私の用語が間違っている、b) 私のコードがゴミである、または c) 私の質問がばかげている/意味をなさない場合は、お詫び申し上げます。また、私はまだベクトルを学んでおらず、私が作成しているプログラムにそれらを使用することは想定されていません。どんな助けでも大歓迎です。乾杯!

4

3 に答える 3

0

あなたの質問はスタック オーバーフローの形式には一般的すぎると思いますが、この場合に必要なのは、パブリック メンバーを作成するか、セッターとゲッターを使用してプライベート メンバーを作成することです。

class Something
{
public:
    std::string m_string;
}

int main()
{
    Something A;
    A.m_string = "toto";
    cout << A.m_string;
    return 0;
}

便宜上文字列を入力します (a を使用することもできますがconst char*、アクセスできなくなり、まだそこに到達していないときにスコープが何であるかを理解する必要があります)。これは電話から入力したため、タイプミスがある可能性があります。

本当に char 自体にアクセスしたい場合は、配列の長さの size_t を指定して char* を渡すか、可能であれば std::array を使用します。

于 2013-11-14T00:28:36.380 に答える