初始化一个二维字符串数组

11

如何在C++中声明一个二维字符串数组?同时,如何将这些字符串写入文件中?


2
什么样的字符串?字符串字面值?C字符串?std::string对象?CString对象?QString对象?某种类型的Unicode字符串?加密字符串?其他类型的字符串?您需要将它们写入什么类型的文件?它们需要以特定方式编码在文件中吗?您有一本好的C++入门书籍吗?如果有,您是否已经查阅了它?如果没有,您应该去获取一本。 - James McNellis
6个回答

5
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;

5

声明和初始化合并:

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

如果要写入文件,templatetypedef的答案几乎是正确的,除了你需要在完成后进行错误检查并关闭输出文件流。


2
您可以这样声明一个多维字符串数组:

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

当然,将137和42替换为您自己的宽度/高度值。 :-)

写入此数组到磁盘上没有“一种正确的方法”。您将基本上迭代整个数组,每次将一个字符串写入磁盘,并使用适当的分隔符和错误检查逻辑。这里是一种天真的实现方式,它每行写出一个字符串(假设字符串中没有换行符):

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;

希望这能有所帮助!

在结尾处执行 output.close() - JP19
3
不必担心,当流对象超出作用域时,析构函数会关闭文件。 - templatetypedef

2
#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;
  }

0

我假设您有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!";

-7

这将创建一个字符串的二维对象:

String str[no of strings];

4
不会,它将创建一个字符串的一维数组。 - Klaus Gütter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接