将常量字符转换为char C ++

时间:2013-07-15 15:43:21

标签: c++

这是我的程序的开头,它产生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;
}

3 个答案:

答案 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'