2013-05-03 58 views
4

Im在赋值时遇到了麻烦,我必须将一个时钟(int小时,int分钟和bool下午)的三个变量转换为方法中的字符串。我试图将int转换为char,然后用char替换每个字符串。如果转换工作或没有,该函数假设返回T/F。以下是我迄今为止:如何将一个int转换为一个char C++

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

查看'atoi'和'itoa'功能 – Patashu 2013-05-03 00:30:39

+0

我忘了提及我的教授喜欢我们这样做,而不使用这些功能。他想从头开始 – 2013-05-03 00:33:26

+0

让我给你一些提示,然后:1)什么是“1” - “0”?什么是'1 +'0'? 2)'/ 10'除以10,'%10'得到除以10得到的余数(例如单位列中的任何值)。现在你已经知道足以解决问题了。 – Patashu 2013-05-03 00:34:41

回答

0

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

+0

@BenVoigt:谢谢你的纠正。 – refi64 2013-05-03 02:01:49

5

它实际上是直截了当的,但可能会首先考虑到一点点扭曲。

我不会给你实际的代码,但有些片断是,如果你能理解他们,你应该能够自行解决问题:

你想要做的是将一个整数到一个字符串/字符。你需要做的最基本的事情是将一个数字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'; 

你需要做的是,把我加到'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 

剩下的逻辑就是你需要做的家庭作业。

+0

非常感谢,我一整周都在摆弄这个。对于其他人谁发现这一点,我只是做了以下几点: 'string time =“00:00; int minutes = 15; int tensMin = minutes/10; //获得分钟的十位数 int onesMin = minutes%10; //得到分钟的个位数 char tens = tensMin; char ones = onesMin; time [0] = tensMin; – 2013-05-03 02:26:06