如何在c ++中声明二维字符串数组?还有如何在文件上写这个字符串?
答案 0 :(得分:4)
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;
答案 1 :(得分:4)
宣言和初始化:
std::string myarray[2][3] = {
{ "hello", "jack", "dawson" },
{ "hello", "hello", "hello" }
};
对于写入文件,templatetypedef的答案几乎没有问题,除非你应该做错误检查并在完成时关闭输出文件流。
答案 2 :(得分: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;
希望这有帮助!
答案 3 :(得分:1)
#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;
}
答案 4 :(得分:0)
我假设你有QString类型。这应该适用于std :: string和even(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!";
答案 5 :(得分:-3)
这将创建一个字符串的2D字符串对象:
String str[no of strings];