当前位置: 首页 > 知识库问答 >
问题:

如何用单词填充二维字符数组?

仇正平
2023-03-14

您知道如何用流中的单词填充数组吗?这是我目前所能做到的:

ifstream db;
db.open("db") //1stline: one|two|three, 2d line: four|five|six....
int n=0,m=0;
char a[3][20];
char c[20];
while(db.get(ch)) {
    if(ch=='|') {
        a[0][m]=*c;
        m++;
    }
    else {
        c[n]=ch;
        n++;
    }
}

所以它看起来像{{1,2,3},{4,5,6},{7,8,9},…}

共有2个答案

束阳旭
2023-03-14

可以使用c对象,如向量和字符串。C中的二维数组对应于C中的向量向量。二维数组中的项是字符串,因此语法为vector

#include <vector>
#include <string>
#include <sstream>
using std::vector;
using std::string;
using std::istringstream;
vector<vector<string> > a;
string line;
while (getline(db, line, '\n'))
{
    istringstream parser(line);
    vector<string> list;
    string item;
    while (getline(parser, item, '|'))
        list.push_back(item);
    a.push_back(list);
}

此代码(未经测试;抱歉可能出现语法错误)使用“字符串流”来解析输入行;它不假设每行3项。修改以满足您的确切需求。

毕魁
2023-03-14

要保存“单词”(字符串)的2维数组,需要3维字符数组,因为字符串是1维字符数组。

您的代码应该如下所示:

int i = 0; // current position in the 2-dimensional matrix
           // (if it were transformed into a 1-dimensional matrix)
int o = 0; // character position in the string

int nMax = 20; // rows of your matrix
int mMax = 3;  // columns of your matrix
int oMax = 20; // maximum string length

char a[nMax][mMax][oMax] = {0}; // Matrix holding strings, zero fill to initialize

char delimiter = '|';

while (db.get(ch)) {  // Assumes this line fills ch with the next character from the stream
    if (ch == delimiter) {
        i++; // increment matrix element
        o = 0; // restart the string position
    }
    else {
        o++; // increment string position
        a[i / mMax][i % mMax][o] = ch;
    }
}

对于输入流“一|二|三|四|五|六|七”,这将返回一个字符串数组,如下所示:

<代码>{{“一”、“二”、“三”}、{“四”、“五”、“六”}、{“七”}

 类似资料:
  • 问题内容: 嗨,我正在尝试根据用户输入自动填充2d数组。用户将输入1个数字,该数字将设置2d数组的大小。然后,我想打印出数组的数字。例如,如果用户输入数字4。2d数组将是4行乘4列,并且应包含数字1到16,并打印如下。 但是,我正在努力思考正确的声明来做到这一点。目前,我的代码只是打印出包含*的2d数组。 有谁知道我如何打印数字的任何想法,我真的被卡住了。我的代码如下: 问题答案: 读取n值,

  • 我对Javafx不熟悉,想知道如何从2维字符串数组填充桌面视图: 会非常感激你的回应。

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?

  • 问题内容: 我必须创建一个大小未知的二维数组。因此,我决定使用2d ArrayList,问题是我不确定如何初始化这样的数组或存储信息。 说我有以下数据 .... etc多达大量的随机连接 我想插入 数组可以自动为我更新列/行吗 任何帮助表示赞赏,谢谢 问题答案: 我不确定如何初始化这样的数组或存储信息。 像这样: 或者,如果您喜欢这样的话: 要插入新行,您可以 并在您执行的操作上附加另一个元素 这

  • 到目前为止,这就是我得到的,但我不太确定接下来该怎么办。我(认为)这里发生的是,它到达数组的第一个位置,在0,0处,并生成一个数字。然后转到1,1和2,2,依此类推。我不确定该从那里开始,我相信有一种更有效的方法可以一次填充整行或整列。 此外,我的编译器不允许我像平时一样使用cout或endl?它坚持我使用std::cout,我只是想知道为什么。

  • 我正在尝试用C++做任务。我需要创建这个函数: 现在我的示例代码如下所示: 我需要用从1到行*列的数字填充数组,从[0][0]和对角线开始。如何在本例中声明并初始化带有数组的函数,然后对角填充?如有任何帮助,我们将不胜感激!