【问题标题】:Change a character from a 'char' in c++在 C++ 中从 'char' 更改字符
【发布时间】:2020-11-10 20:56:03
【问题描述】:

有没有办法改变 char 中的单个字符? 像这个例子 我有用户输入。用户应输入一个数字。如果数字是浮点数或双倍数,则用户应输入一个点。但是如果用户输入“,”(3,44 或 54,33) 我的代码不起作用。有没有一般的方法来改变逗号? 像这样:

char number1[50], number2[50];

number1 = 2,33;
number2 = 54,45;

变成

number1 = 2.33;
number2= 54.34;

感谢您的帮助!

【问题讨论】:

  • 当然。 number 是一个字符数组,因此请写入数组中的正确位置:char number[50] = "2,33"; number[1] = '.';
  • 我不希望在有或没有缺少; 的情况下进行编译。请扩展您的真正目标。
  • 菠萝,我们肯定需要更好的问题描述和代码示例。
  • 另一方面,如果您确实想将数字直接分配给字符串,那么这就是 sprintf() 的用途(或者如果您使用 C++,则为 stringstream)

标签: c++ replace char


【解决方案1】:

首先,您不能将 int、double 等分配给 char 数组。 所以number[50] = 2,33; 毫无意义。 您必须将数字定义为“字符数组”。我的意思是说?您应该将 char 数组定义为 char number[50] = "2,33";

#include <iostream>
int main()
{
char number[50] = "2,33";
number[1] = '.';
std::cout << number << std::endl;

    return 0;
}

输出应该是:2.33

【讨论】:

  • 好的,我需要这个用于用户输入,如果用户输入,例如数字 52,3,我需要将 ',' 更改为 '.'。
  • 所以你必须在 char 数组中搜索 ','。在现代 C++ 中,您可以只使用字符串。但是如果你想自己操作整个数组。您可以使用 for 循环并检查数组的每个元素。当你找到'''的位置时,你只需停下来获得位置。然后将number[position]的值改为'.'
【解决方案2】:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main ()
{
  char valor;
  const char x = ',';
  const char y = '.';

  cout << "Please enter an char value: ";
  cin >> valor;

  /*Cast char to string*/
    std::stringstream auxiliar;
    std::string varfin;
    auxiliar << valor;
    auxiliar >> varfin;

  /*Replace*/
  std::replace(varfin.begin(), varfin.end(), x, y);
  std::cout << varfin;

  return 0;
}

【讨论】:

    【解决方案3】:

    将字符转换为字符串以用于替换的工作方法

    替换方法

    【讨论】:

    • 文本应该显示为文本。有many, many good reasons为什么不应该在问题和答案中使用图像,除非图像作为图像对问题或答案很重要。
    • 嗨。打扰一下。我不知道。
    • 很容易修复,所以你不妨这样做。我很想收回反对票。我讨厌把它们留在孩子们可以找到它们的地方。
    猜你喜欢
    • 2019-04-15
    • 2018-11-19
    • 1970-01-01
    • 2021-03-12
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多