将字符串转换为char 2d数组 [英] Convert string to char 2d array

查看:69
本文介绍了将字符串转换为char 2d数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否有人知道如何将字符串转换为2d数组?这是我的尝试:

I was wondering does anyone know how to convert a string into a 2d array? This was my attempt:

string w;
char s[9][9];
int p=0;
getline(cin, w);
while(p != w.size())
{
  for (int k = 0; k < 9; k++)
  {
    for(int j = 0; j < 9; j++)
    {
      s[k][j] = w[p];
      p++;
    }
  }
}
  cout << "nums are: " << endl;
  for(int k = 0; k < 9; k++)
  {
    for(int j = 0; j <9; j++)
    {
      cout << s[k][j];
    }
  }

但是数字不能正确打印出来.我希望s [k] [j]打印出w中的所有内容,但它只是打印出乱码.我还注意到,如果我做字符串[81],那么我会收到很多错误.有人可以帮我吗?谢谢.

But the numbers don't print out correctly. I want s[k][j] to print out everything in w but it simply prints out gibberish. I also noticed if i do string[81] then I get a whole bunch of errors. Could anyone help me? Thanks.

推荐答案

尝试一下:

const int NUM_ROWS = 9;
const int NUM_COLS = 9;

string w;
char s[NUM_ROWS][NUM_COLS];

getline(cin, w);

if (w.size() != (NUM_ROWS * NUM_COLS))
{
    cerr << "Error! Size is " << w.size() << " rather than " << (NUM_ROWS * NUM_COLS) << endl;
    exit(1);
}

for (int count = 0; count < w.size(); count++)
{
    if (!isdigit(w[count]) && w[count] != '.')
    {
        cerr << "The character at " << count << " is not a number!" << endl;
    }
}

for (int row = 0; row < NUM_ROWS; row++)
{
    for(int col = 0; col < NUM_COLS; col++)
    {
        s[row][col] = w[col + (row * NUM_COLS)];
    }
}

cout << "Nums are: " << endl;

for(int row = 0; row < NUM_ROWS; row++)
{
    for(int col = 0; col < NUM_COLS; col++)
    {
        cout << s[row][col] << " ";
    }

    cout << endl;
}

基于我们的聊天,您可能想要这样做:

Based on our chat, you might want this:

const int NUM_ROWS = 9;
const int NUM_COLS = 9;

string w;
char s[NUM_ROWS][NUM_COLS];

while (!cin.eof())
{
    bool bad_input = false;

    getline(cin, w);

    if (w.size() != (NUM_ROWS * NUM_COLS))
    {
        cerr << "Error! Size is " << w.size() << " rather than " << (NUM_ROWS * NUM_COLS) << endl;
        continue;
    }

    for (int count = 0; count < w.size(); count++)
    {
        if (!isdigit(w[count]) && w[count] != '.')
        {
            cerr << "The character at " << count << " is not a number!" << endl;
            bad_input = true;
            break;
        }
    }

    if (bad_input)
        continue;

    for (int row = 0; row < NUM_ROWS; row++)
    {
        for(int col = 0; col < NUM_COLS; col++)
        {
            s[row][col] = w[col + (row * NUM_COLS)];
        }
    }

    cout << "Nums are: " << endl;

    for(int row = 0; row < NUM_ROWS; row++)
    {
        for(int col = 0; col < NUM_COLS; col++)
        {
            cout << s[row][col] << " ";
        }

        cout << endl;
    }
}

这篇关于将字符串转换为char 2d数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆