c++ - ASCII 字符数组

标签 c++ arrays ascii tabular

我正在尝试制作一个包含所有 32-255 个 ASCII 字符的数组,但我真的不认为这是我创建的数组?

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

更新:

这就是我的代码现在的样子。 ASCII 表以数组形式出现,但不是 7 列和 32 行。每个字符前的32、33、34、35、36也没有了。

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

最佳答案

引用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?

您可以按如下方式进行:

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

关于输出表格中的内容,你可能想用这个:

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

这是完全可用的 Live Demo


您将从上面获得的输出如下所示:

    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  �

请注意打印在终端上的 字符,表示值大于 126。这些取决于选择用于显示的代码页(例如特殊拉丁字符,如 íêüö 等)。

关于c++ - ASCII 字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621704/

相关文章:

c - 如何从 Windows .txt 文件中读取回车符(即 '\r' )

c++ - 大型3D阵列性能: contiguous 1D storage vs T***

无法弄清楚我的代码有什么问题:\(Array subtraction in C)

javascript - 为什么我的排序不起作用?

c++ - 将一个c++字符串分成两部分

c - 打印 Ascii 符号

java - 使用自己的方法将字符串从 args 数组转换为单个变量 int

c++ - 我如何在 Boost Spirit 中实现 const?

c++ - MS Visual Studio 2010 : _UzpVersion is requested by object file, 但 _UzpVersion@0 由库导出

c++ - 无法找到二维数组中每一列的最大值