0

これが、10 の長い文字列を作成するプログラムの始まりです。bigfor を「0」に設定しようとするたびに、定数 char から char に変換する必要があると表示されます。これはどのように行われますか?

// basic file operations
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

int main () {



char bigfor[10];
int arrayvar = 0;
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;
int i;
int j;

// Constants

int variable1 = 0;
int variable2 = 1;
int variable3 = 2;
int variable4 = 3;
int variable5 = 4;
int variable6 = 5;
int variable7 = 6;
int variable8 = 7;
int variable9 = 8;
int variable10 = 9;






for (a=0; a < 36; a++)

{

switch (a)

 {
case 0:
  bigfor[variable1] = "0";
   break;
 case 1:
  bigfor[variable1] = "1";
   break;
 case 2:
  bigfor[variable1] = "2";
   break;
 case 3:
  bigfor[variable1] = "3";
   break;
 case 4:
  bigfor[variable1] = "4";
   break;
 case 5:
  bigfor[variable1] = "5";
   break;
 case 6:
  bigfor[variable1] = "6";
   break;
 case 7:
  bigfor[variable1] = "7";
   break;
 case 8:
  bigfor[variable1] = "8";
   break;
 case 9:
  bigfor[variable1] = "9";
   break;
}


 ofstream myfile;
  myfile.open ("codes.txt");
  myfile << bigfor[variable1];
  myfile << bigfor[variable2];
  myfile << bigfor[variable3];
  myfile << bigfor[variable4];
  myfile << bigfor[variable5];
  myfile << bigfor[variable6];
  myfile << bigfor[variable7];
  myfile << bigfor[variable8];
  myfile << bigfor[variable9];
  myfile << bigfor[variable10];
  myfile << '\n';
  myfile.close();


}
 return 0;
}
4

3 に答える 3

4

bigforは type の配列charですが、文字列を入れています。

"0"コンパイラによってリテラル文字列として解釈されるような、二重引用符で囲まれたテキスト。

'0'コンパイラによってリテラル文字として解釈されるような単一引用符で囲まれたテキスト。

したがって、 に char を追加するときは、一重引用符bigforを使用して、文字列ではなく s であることをコンパイラに伝える必要があります。char

bigfor[variable1] = '0';
于 2013-07-15T15:46:39.133 に答える
3

エラーを読み違えています。それがあなたに伝えているのは、 const char *(へのポインタconst char、つまりC文字列)をchar(単一の文字)に変換できないということです。

のようなリテラル"0"は、ゼロで終わる文字の定数配列を表し、式で使用されると、配列の最初の文字へのポインターに変換されます。必要なのは、一重引用符で表される単一の文字'0'です"0"

于 2013-07-15T15:46:50.513 に答える
0

文字を埋める必要がありますが、リテラル文字列を埋めています。この方法を試してください

bigfor[variable1] = '0'
于 2013-07-15T15:47:42.460 に答える