如何在 c 中把枚举型转换为字符串-ag捕鱼王app官网

如何在 c 中把枚举型转换为字符串

作者:迹忆客 最近更新:2024/01/02 浏览次数:

本文将解释几种在 c 中把枚举类型转换为 string 变量的方法。


使用 const char*数组将枚举类型转换为字符串

枚举 enum 是一个内置类型,可用于声明通常以数组形式形成的较小的命名整数。这种机制提供了一种不易出错和更易读的方式来表示一组整数值。

枚举元素可以有一个位置值(如我们的示例代码中 banana0),也可以有一个显式值(声明为 enum fruit { banana = 34, ...})。

这个例子展示了如何利用枚举元素的隐式值从数组中访问相应的字符串值。注意,我们在 main 函数的开头用 1-4 范围内的值初始化随机 input 变量,以更好地展示现实中真实的场景。

#include #include #include using std::cin;
using std::cout;
using std::endl;
using std::string;
enum fruit { banana, coconut, mango, carambola, total };
static const char *enum_str[] = {"banana pie", "coconut tart", "mango cookie",
                                 "carambola crumble"};
int main() {
  std::srand(std::time(nullptr));
  int random = rand() % total;
  auto input = static_cast<fruit>(random);
  switch (input) {
    case banana:
      cout << enum_str[banana] << endl;
      break;
    case coconut:
      cout << enum_str[coconut] << endl;
      break;
    case mango:
      cout << enum_str[mango] << endl;
      break;
    case carambola:
      cout << enum_str[carambola] << endl;
      break;
    case total:
      cout << "incorrect ingredient!" << endl;
      break;
  }
  return exit_success;
}

输出:

banana pie

使用自定义函数将一个枚举转换为一个字符串

或者,我们也可以定义自己的函数,它接受一个整数作为参数并返回一个字符串值。字符串变量是用函数内部的 enum_str 数组中的 const char*值初始化的。如果你把 total 值作为参数传给 getstringforenum 函数,它将返回一些垃圾值,因为 enum_str 数组只有 4 个元素。

#include #include #include using std::cin;
using std::cout;
using std::endl;
using std::string;
enum fruit { banana, coconut, mango, carambola, total };
static const char *enum_str[] = {"banana pie", "coconut tart", "mango cookie",
                                 "carambola crumble"};
string getstringforenum(int enum_val) {
  string tmp(enum_str[enum_val]);
  return tmp;
}
int main() {
  string todays_dish = getstringforenum(banana);
  cout << todays_dish << endl;
  return exit_success;
}

输出:

banana pie

在上述枚举类型中加入 total 元素可以有实际的用途。首先,它代表了枚举中可以作为循环参数利用的元素数量,如下例代码所示。第一个循环从 enum_str 数组中提取每个字符串,并将它们推送到 enum_strigs 向量变量中。第二次迭代将 enum_strigs 的内容打印出来到控制台。

#include #include #include #include using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
enum fruit { banana, coconut, mango, carambola, total };
static const char *enum_str[] = {"banana pie", "coconut tart", "mango cookie",
                                 "carambola crumble"};
string getstringforenum(int enum_val) {
  string tmp(enum_str[enum_val]);
  return tmp;
}
int main() {
  vector<string> enum_strigs{};
  enum_strigs.reserve(total);
  for (int i = 0; i < total; i) {
    enum_strigs.push_back(getstringforenum(i));
  }
  for (const auto &item : enum_strigs) {
    cout << item << endl;
  }
  return exit_success;
}

输出:

banana pie
coconut tart
mango cookie
carambola crumble

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:c

可以使用 exit(0),无限循环和 sleep_n0m1 库在 arduino 中停止循环。

arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:c

可以通过使用复位按钮,softwarereset 库和 adafruit sleepydog 库来复位 arduino。

发布时间:2024/03/13 浏览次数:181 分类:c

可以使用简单的方法 toint()函数和 serial.parseint()函数将 char 转换为 int。

arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:c

可以使用 serial.print()和 serial.println()函数在串口监视器上显示变量值。

arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:c

可以使用 if 语句检查 arduino 中的不同条件。

arduino icsp

发布时间:2024/03/13 浏览次数:214 分类:c

icsp 引脚用于两个 arduino 之间的通信以及对 arduino 引导加载程序进行编程。

发布时间:2024/03/13 浏览次数:151 分类:c

可以使用 arduino 中的循环制作计数器。

使用 c 编程 arduino

发布时间:2024/03/13 浏览次数:127 分类:c

本教程将讨论使用 arduino ide 在 c 中对 arduino 进行编程。

arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:c

可以通过在 arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图