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'被编译器解释为文字字符。

因此,当您将字符添加到 时bigfor,您应该使用单引号告诉编译器它们是chars,而不是字符串。

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 回答