这是我的程序的开头,它产生10个长字符串。每当我尝试将bigfor设置为“0”时,它表示它需要从常量字符转换为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;
}
答案 0 :(得分:4)
bigfor
是一个char
类型的数组,但是你将字符串放入其中。
双引号之间的文本(例如"0"
)被编译器解释为文字字符串。
编译器将单引号(例如'0'
)之间的文本解释为文字字符。
因此,当您向bigfor
添加字符时,您应该使用单引号告诉编译器它们是char
而不是字符串。
bigfor[variable1] = '0';
答案 1 :(得分:3)
您误读了错误。它告诉你的是它无法将const char *
(指向const char
的指针,即C字符串)转换为char
(单个字符)。
"0"
等文字表示以零结尾的常量字符数组,当在表达式中使用时,会转换为指向数组中第一个字符的指针。你想要的是一个单个字符,用单引号表示:'0'
而不是"0"
。
答案 2 :(得分:0)
您需要填充字符,但是您正在填充文字字符串。请尝试这种方式
bigfor[variable1] = '0'