2017-12-03 21 views
0

すべての32-255 ASCII文字の配列を作成しようとしていますが、これは私が作成した配列ではないと思いますか?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; 
} 

UPDATE:

これは私のコードは今ある方法です。 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; 
    } 
+1

コードには配列がありません。ただ印刷しているだけです。 – tkausl

+0

32行7列の出力を実際に得ても、私もそう思っていました。どのように地球上で7列32列の配列を作成し、すべての32-255 ASCII文字の内容で埋めることができますか? – Thesar

+0

2D配列を検索 –

答えて

2

OP's commentを参照:

地球に7列と32行の配列を作ることができ、すべての32から255個のASCII文字の内容とそれを埋める方法は?

あなたは次のようにそれを行うことができます。

はここで完全に動作する Live Demo

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

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

テーブル内のコンテンツを出力するについて、あなたはおそらくこれを使用したいです


出力

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よりも値おろし金用の端末に印刷文字を:上かららは次のようになります。これらは、表示用に選択されたコードページ(例えば、í,ê,üöなどの特殊なラテン文字)によって異なります。

+1

これで問題が解決しました。あなたはヒーローです。私はyoutubingとどのように配列の仕事のためのグーグルです。私は思ったより複雑だった。私はこの背後にある論理を学ぶことを望むので、私はあなたがそのコードで行ったことを理解しています。あなたが説明との良いリンクがあれば、それを私と分かち合うことができます。そうでなければ、もう一度@ user0042 – Thesar

+1

@Ronそれは帽子だった可能性があります;-) ...ありがとう – user0042

1

unsigned char Sの2次元アレイが127よりも大きい値を保持することができるようにします。そして、ヘルパー変数をインクリメントし、値を割り当てる:

int main() { 
    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++; 
     } 
    } 
} 

またはC++の道の@ user0042により示唆されるようstd::arrayラッパーを利用することによって:

#include <iostream> 
#include <array> 

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

使用し、それをプリントアウトするには:

for (auto& row : myarray) { 
    for (auto& el : row) { 
     std::cout << static_cast<int>(el) << ' ' << static_cast<char>(el) << ' '; 
    } 
    std::cout << '\n'; 
} 

すべての文字ではないことに注意してください。are printable

+1

ちょっと仲間、すぐに始まる;-) – user0042

+0

私はそれを試しましたが、出力が配列に来ていない、それはちょうど私が選択したsetwセットでホップします。何が間違っていた可能性がありますか? – Thesar

+0

@あなたが教えてくれます。あなたの最新のコードを表示するためにあなたの質問を編集してください –

0

コードは32行7列の場合にほぼ正しいです。あなたは正しい位置に令を置いていません。

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)          
    { 
     cout << "\n"; 
     col = 1; 
    } 
} 
関連する問題