如何将int转换为char C ++

时间:2013-05-03 00:27:41

标签: c++

我遇到了一个问题,我必须转换一个时钟的三个变量(int hour,int minutes和bool afternoon)才能转换为方法中的字符串。我尝试将int转换为char,然后用char替换每个字符串。如果转换有效,则该函数假设返回T / F.以下是我到目前为止的情况:

class Time
{
private:
  int hour;
  int minutes;
  bool afternoon;
public:
  void setHour(int hr);
  void setMinutes(int min);
  void setAfternoon(bool aft);

  int getHour();
  int getMinutes();
  bool getAfternoon();

  bool setAsString(string time);
  string getAsString();

  Time(void);
  ~Time(void);
};

bool Time::setAsString(string time){
char min = minutes;
char hr = hour;

char hr[0] = time[0];
char hr[1]= time[1];
char min[0] = time[3];
char min[1] = time[4];
char afternoon = time[6];
if ((hourTens > 1) || (minTens > 5)) {
return false;
} else {
return true;
}
}
string Time::getAsString(){
return false;
}

2 个答案:

答案 0 :(得分:5)

事实上它是直截了当的,但最初可能会涉及一点点扭曲。

我不打算给你实际的代码,但是如果你能理解它们,你应该能够自己解决问题的一些片段:

您要做的是将整数转换为字符串/ char。您需要做的最基本的事情是将单个数字int转换为相应的char。

// for example you have such integer
int i = 3;

// and you want to convert it to a char so that
char c = '3';

您需要做的是将i添加到'0'。它起作用的原因是因为'0'实际上意味着整数值为48.'1'。'9'表示49..57。这是一个简单的补充,用于找出单个十进制数字整数的相应字符:

即。 char c ='0'+ i;

如果您知道如何将单个十进制数字int转换为char,剩下的就是如何从一个多于一位的十进制数字中提取单个数字

使用/和%

只是一个简单的数学运算
int i = 123 % 10;  // give u last digit, which is 3
int j = 123 / 10;  // give remove the last digit, which is 12

剩下的逻辑就是你需要做的功课。

答案 1 :(得分:0)

假设您想手动将每个char转换为int,这是一个非常粗略的想法。使用switch语句将每个char转换为其ascii值。例如,switch(char_to_convert)的{​​{1}}将返回1.基本上,转换为ASCII的“1”为49(感谢Ben Voigt的更正)。你实际上并不需要转换它;你编译器会注意到并为你转换它。 然后你进行比较。有关完整列表,请参见Ascii表。