c++ - 字符赋值数组不起作用

标签 c++ arrays char switch-statement

我试图在 switch 语句中更改我的 char 数组 [10] 的值,这样,如果我们有情况 1,我的 char 数组 [10]="january",或者如果我们有情况 2,则数组[10]="二月"等等。问题是我收到错误消息,而且我知道我做错了什么。任何帮助将不胜感激。这是我用 Dev-C++ 编写的 switch 语句。

char month[10];
switch (i)
{
 case 1:
       month[10]="January";
      cout<<month<<endl;
      break; 
 case 2:
       month[10]="February";
      cout<<month<<endl;
      break;
} 

最佳答案

你不能像这样分配char数组,你需要使用strcpy

或者更好的是,使用 std::string,这是 C++ 要做的事情。

std::string month;
switch (i)
{
 case 1:
       month="January";
      cout<<month<<endl;
      break; 
 case 2:
       month="February";
      cout<<month<<endl;
      break;
} 

或者如果您必须坚持使用 char[]:

char month[10];
switch (i)
{
 case 1:
      strcpy(month,"January");
      cout<<month<<endl;
      break; 
 case 2:
      strcpy(month,"February");
      cout<<month<<endl;
      break;
} 

您收到错误的原因是 month[10] 是一个 char,而您正试图分配一个 const char* 给它,这是非法的。 (实际上这是未定义的行为,因为 10 超出了数组的长度)。

关于c++ - 字符赋值数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697656/

相关文章:

c# - 如何将 int[] 转换为 int[,] - C#

c# - 字符串数组。包含?

c# - 在 C# 中如何获取以 Unicode 格式打印的 char 的最小值和最大值?

c++ - C 和 C++ 中的 CoCreateInstance 函数签名

c++ - 为什么在 C++ 中使用私有(private)复制构造函数与删除的复制构造函数

c# - 在 C# 中创建非托管 C++ 对象

c++ - QUiLoader : requirements for loading . 带有自定义小部件的 ui 文件?

java - 如何在java中将Time转换为int

c++ - 在 C++ 中修改单个字符串元素

c# - 对大于 255 的整数进行字符转换