4

我在分配时遇到问题,我必须将时钟的三个变量(int 小时、int 分钟和 bool 下午)转换为方法中的字符串。我尝试将 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;
}
4

2 回答 2

10

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

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

您要做的是将整数转换为字符串/字符。您需要做的最基本的事情是将单个数字 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

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

于 2013-05-03T01:49:16.747 回答
0

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

于 2013-05-03T00:41:25.050 回答