0

わかりにくいかもしれませんが、私はプログラミングのアイデアが初めてです。テキストファイルから値を取得して割り当て、シリアル接続を介してArduinoに送信するCNCプロジェクトがあり、Arduinoはモーターを受け取って駆動します。

for( std::string line; getline( input, line ); ) 
{
int x, y;
input >> x >> y;
}

しかし、プログラムで任意の長さのテキスト ファイル (任意の数の座標) を処理できるようにしたいと考えています。インターフェイスでは、ユーザーがコマンドの数を指定できるようにする入力パネルを設計しています。しかし、その数のコマンドを取り、その数の変数を導入するコードを導入するにはどうすればよいでしょうか? 各、およびその他のコマンドタイプの1000変数を作成することでこれをブルートフォースできることを理解しており、可能な行処理を実行できますが、これを実現して調整するコードを用意する方がはるかに効率的です。X, Y, Z1000

たとえば、テキスト入力ボックスに指定された値を出力させたとしますNumberOfCommandsX-axis, Y-axis, and Z-axisその数が等しい数の(および他のシリアル)コマンドを作成するようにプログラムに指示するにはどうすればよいNumberOfCommandsですか?

4

2 に答える 2

3

クラスを使用して、std::vector任意の数の要素を格納できます。

したがって、あなたの場合、次のようなものです:

struct Coordinate {
    int x,y,z;
};

std::vector<Coordinate> coords;

for( std::string line; getline( input, line ); ) 
{
   Coordinate coord;
   input >> coord.x >> coord.y >> coord.z;
   coords.push_back(coord);
}

またはemplace_back

struct Coordinate {
    Coordinate(int x, int y, int z):x(x),y(y),z(z){ }
    int x,y,z;
};

std::vector<Coordinate> coords;
int x,y,z;    
for( std::string line; getline( input, line ); ) 
{
   input >> x >> y >> z;
   coords.emplace_back(x,y,z);
}

emplace_backのようにコピーを作成するのではなくpush_back、要素を作成してベクターに配置します。

于 2013-05-24T23:16:27.443 に答える
0

動的にサイズ変更される配列を使用できます。

たとえば、ここから

int *myArray;           //Declare pointer to type of array
myArray = new int[x];   //use 'new' to create array of size x
myArray[3] = 10;        //Use as normal (static) array
...
delete [] myArrray;     //remember to free memory when finished.

問題はどこxから来るのですか?1000 と仮定して、配列を埋めるときにカウントを維持できます。次に、そのサイズよりも多くの情報を取得した場合は、配列のサイズを変更できます。

または、STL のように開始するエンティティから開始することもできますvector<int>

于 2013-05-24T23:17:33.197 に答える