web-dev-qa-db-ja.com

文字列の2次元配列を初期化する

C++で文字列の2次元配列を宣言するにはどうすればよいですか?また、この文字列をファイルに書き込む方法は?

8
honey

一緒に宣言と初期化:

std::string myarray[2][3] = {
  { "hello", "jack", "dawson" }, 
  { "hello", "hello", "hello" }
};

ファイルへの書き込みの場合、templatetypedefの答えはほぼ問題ありませんが、エラーチェックを実行し、完了したら出力ファイルストリームを閉じる必要があります。

5
JP19
typedef std::vector<std::string> StringVector;
typedef std::vector<StringVector> StringVector2D;
StringVector2D twoD;
for (StringVector2D::iterator outer = twoD.begin();  outer != twoD.end();  ++outer)
    for (StringVector::iterator inner = outer->begin();  inner != outer->end();  ++inner)
        std::cout << *inner << std::endl;
4
Mark Ransom

次のように、文字列の多次元配列を宣言できます。

std::string myArray[137][42];

もちろん、137と42を独自の幅/高さの値に置き換えます。:-)

この配列をディスクに書き込むための「1つの正しい方法」はありません。基本的に、配列を反復処理して、適切なセパレータとエラーチェックロジックを使用して、一度に1つの文字列をディスクに書き込みます。これは、1行に1つの文字列を書き出す単純な実装です(文字列に改行が含まれていないと仮定します)。

std::ofstream output("result.txt");
for (size_t i = 0; i < 137; ++i)
    for (size_t j = 0; j < 42; ++j)
        output << myArray[i][j] << std::endl;

お役に立てれば!

2
templatetypedef
#include<iostream>
#include<vector>
using namespace std;

  main()
  {
  vector< vector<string> > m2m;
  vector<string> A, B;
  vector< vector<string> >::iterator inter_i;
  vector<string>::iterator inter_j;

  A.Push_back("micro");
  A.Push_back("soft");
  A.Push_back("bilgates");
  B.Push_back("linux");
  B.Push_back("unix");
  B.Push_back("ken dennish");

  m2m.Push_back(A);
  m2m.Push_back(B);


  cout<<endl<<" USing iterator : "<<endl;

    for(inter_i=m2m.begin();inter_i!=m2m.end();inter_i++)
    {
      for(inter_j=(*inter_i).begin();inter_j!=(*inter_i).end();inter_j++)
       {
         cout<<*inter_j<<"       ";
       }
       cout<<endl;
    }

  return 0;
  }
1
Manish Bhadani

QStringタイプだと思います。これは、std :: string、さらには(char *)でも正しく機能するはずです。

QString ** myTwoDimensionalArray;

myTwoDimensionalArray = new QString*[size_x];
for(int i=0; i<size_x; i++) myTwoDimensionalArray[i] = new QString[size_y];

それでおしまい。今、あなたは次のようなものを書くことができます:

myTwoDimensionalArray[x][y] = "Hello, World!";
0
Arenim