【问题标题】:how to convert an int to a char C++如何将 int 转换为 char C++
【发布时间】:2013-05-03 00:27:40
【问题描述】:

我在分配时遇到问题,我必须将时钟的三个变量(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;
}

【问题讨论】:

  • 查找atoiitoa函数
  • 我忘了提到我的教授更喜欢我们这样做而不使用那些函数。他想要从头开始
  • 让我给你一些提示,然后:1)什么是'1' - '0'1 + '0' 是什么? 2) / 10 除以 10,% 10 得到除以 10 得到的余数(例如,单位列中的任何内容)现在您知道足以解决问题了。
  • '1' - '0' = '1' and 1 + '0' = ascii code 对吧?至于/10,我不确定这对我有什么帮助。我是 C++ 新手。这样做会让我更接近我的目标,这基本上是教授想要的(将给定的 int(例如 09)交换成给定的字符串(例如上午 00:00),但我不知道该怎么做:int intday = 15; string strDay = "00"; char day = intday + '0'; strDay[1] = intDay[1];
  • 没有。 '1' - 0'1''1' - '0' 不同。

标签: c++


【解决方案1】:

实际上是直截了当的,但一开始可能会涉及到一些曲折。

我不会给你实际的代码,而是一些sn-p,如果你能理解它们,你应该可以自己解决问题:

您要做的是将整数转换为字符串/字符。您需要做的最基本的事情是将单个数字 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。这是查找单个十进制数字整数的对应字符的简单添加:

即字符 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

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

【讨论】:

  • 非常感谢,我整个星期都在摆弄这个。对于发现此问题的其他任何人,我只是执行了以下操作:`string time = "00:00; int minutes = 15; int tensMin = minutes / 10;// 获取分钟的十位数 int onesMin = minutes % 10 ;// 获取分钟的个位 char tens = tensMin; char one = oneMin; time[0] = tensMin;
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 2013-04-15
    • 2015-12-18
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多