【问题标题】:How can I convert 1 element of an int array to a string/char如何将 int 数组的 1 个元素转换为字符串/字符
【发布时间】:2019-07-22 22:55:41
【问题描述】:

当我尝试编写例如arr[0] = 'y'; 并尝试打印它时,它将打印“121”,因为 121 在 ASCII 表中是“y”。如何转换它,以便数组元素将其替换为实际的 'y'?

int example [2] = {16,2};

如何将例如 16 转换为字母 'y',所以如果我打印整个数组,它会打印 "y2" 而不是 1212

打印格式:

int r[2] = {12,43};
    for(int i=0; i<2;i++){
        cout << r[i];
    }

【问题讨论】:

  • 为什么不使用字符串?
  • @bolov 字符串也可以工作
  • 请提供minimal reproducible example。确保显示所有变量声明以及如何打印输出。
  • @John3136 一秒
  • @Nope 什么是简单打印?

标签: c++ arrays string char int


【解决方案1】:

数组是同构的。数组的所有元素都具有相同的类型。如果你有一个int 数组,那么所有元素的类型都是int

当您将int 插入字符流时,输出将是一个数字,其格式与num_put::put() 等效。

因此,如果您想看到像y 这样的输出,那么您必须插入一个字符或一个字符串。如果你想输出一个像字符一样的对象,而另一个像整数一样,那么这些对象必须有不同的类型。

字符是整数(带有特殊处理),并且可以与int 相互转换(尽管并非所有int 值都可以表示为char)。使用这种转换的示例:

int example [2] = {'y',2};
std::cout << char(example[0]) <<  example[1];

【讨论】:

  • 不能改吗?例如,如果数组是这样的 int example [2] = {'y',2};你可以这样做 char(example[0]='x') 或类似的东西
  • 元素的值可以改变,是的。类型不能更改。
【解决方案2】:

将字母与数字关联的一种简单方法是使用std::map

std::map<int, char> conversions;
//...
map[16] = 'y';
//...
std::cout << map[16] << std::endl;

你也可以使用一个字符数组:

static const char conversion_array[] =
{'F', ..., 'y', ...};
std::cout << conversion_array[16] << std::endl;

【讨论】:

  • 我知道我可以使用 char 数组,但我不喜欢这样做。你能告诉我我发布的代码上的地图示例吗?如何在那里使用它
  • 你看到我使用std::map的例子了吗?您想将数字 16 与字符“y”相关联。 (在 ASCII 编码中,第一个可打印字符从 32 开始)。
【解决方案3】:
short my_short = 12;
char my_character = static_cast<char>(my_short);

std::cout << my_character << std::endl;

将打印一个字符

std::ostream 有一个重载的运算符

【讨论】:

  • 你想让我用勺子喂他?我只是告诉他发生了什么,他可以遍历 int[] 并为每个角色执行 static_cast。
猜你喜欢
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多