Search code examples
c++arraysasciitabular

Array of ASCII characters


I am trying to make an array of all 32-255 ASCII characters, but I don't really think this is an array that I have created?

int main()
{
    cout << " ASCII 32 - 255\n";

    int col = 1;                                        

    for (int asc_char = 32; asc_char < 256; asc_char++) 
    {
        cout << std::setw(6) << asc_char << setw(3) << static_cast<char>(asc_char);

        col++;
        if (col > 7)                                    
        {
            col = 1; 
        }
    cout << "\n";

    return 0;
}

UPDATE:

This is how my code is now. The ASCII table comes out in an array, but not in 7 columns and 32 rows. The 32,33,34,35,36 before each character is also gone.

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    cout << " ASCII 32 - 255\n";

    unsigned char myarray[7][32] = {};
    int val = 32;
    {

        for (size_t i = 0; i < 7; i++) {
            for (size_t j = 0; j < 32; j++) {
                myarray[i][j] = val++;
            }
        }
    }
    // for (int asc_char = 32; asc_char < 256; asc_char++)
    //  cout << std::setw(6) << asc_char << setw(3) << static_cast<char>(asc_char);
     for (auto& row : myarray) {
         for (auto& col : row) {
             std::cout << col << ' ';
         }
         std::cout << '\n';
     }

        return 0;
    }

Solution

  • Referring to OP's comment:

    How in earth can a make an array of 7 columns and 32 rows and fill it with the content of all 32-255 ASCII chars?

    You can do that as follows:

    #include <iostream>
    #include <array>
    
    int main() {
        std::array<std::array<unsigned char,7>,32> myarray;
        unsigned char val = 32;
        for (auto& row : myarray) {
            for (auto& col : row) {
                col = val++;
            }
        }
    }
    

    Regarding to output the contents in a table, you probably want to use this:

    for (auto& row : myarray) {
        for (auto& col : row) {
            std::cout << std::setw(6) << std::right << static_cast<int>(col) 
                      << std::setw(3) << std::right << static_cast<char>(col);
        }
        std::cout << std::endl;
    }
    

    Here's the fully working Live Demo


    The output you'll get from the above looks like:

        32       33  !    34  "    35  #    36  $    37  %    38  &
        39  '    40  (    41  )    42  *    43  +    44  ,    45  -
        46  .    47  /    48  0    49  1    50  2    51  3    52  4
        53  5    54  6    55  7    56  8    57  9    58  :    59  ;
        60  <    61  =    62  >    63  ?    64  @    65  A    66  B
        67  C    68  D    69  E    70  F    71  G    72  H    73  I
        74  J    75  K    76  L    77  M    78  N    79  O    80  P
        81  Q    82  R    83  S    84  T    85  U    86  V    87  W
        88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^
        95  _    96  `    97  a    98  b    99  c   100  d   101  e
       102  f   103  g   104  h   105  i   106  j   107  k   108  l
       109  m   110  n   111  o   112  p   113  q   114  r   115  s
       116  t   117  u   118  v   119  w   120  x   121  y   122  z
       123  {   124  |   125  }   126  ~   127     128  �   129  �
       130  �   131  �   132  �   133  �   134  �   135  �   136  �
       137  �   138  �   139  �   140  �   141  �   142  �   143  �
       144  �   145  �   146  �   147  �   148  �   149  �   150  �
       151  �   152  �   153  �   154  �   155  �   156  �   157  �
       158  �   159  �   160  �   161  �   162  �   163  �   164  �
       165  �   166  �   167  �   168  �   169  �   170  �   171  �
       172  �   173  �   174  �   175  �   176  �   177  �   178  �
       179  �   180  �   181  �   182  �   183  �   184  �   185  �
       186  �   187  �   188  �   189  �   190  �   191  �   192  �
       193  �   194  �   195  �   196  �   197  �   198  �   199  �
       200  �   201  �   202  �   203  �   204  �   205  �   206  �
       207  �   208  �   209  �   210  �   211  �   212  �   213  �
       214  �   215  �   216  �   217  �   218  �   219  �   220  �
       221  �   222  �   223  �   224  �   225  �   226  �   227  �
       228  �   229  �   230  �   231  �   232  �   233  �   234  �
       235  �   236  �   237  �   238  �   239  �   240  �   241  �
       242  �   243  �   244  �   245  �   246  �   247  �   248  �
       249  �   250  �   251  �   252  �   253  �   254  �   255  �
    

    Note the characters printed on the terminal for values grater than 126. These are depending on the code page chosen for displaying (e.g. special latin characters like í,ê,ü.ö,etc.).