我遇到了一个问题,我必须转换一个时钟的三个变量(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;
}
答案 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表。