简短一句:从char到const char的无效转换*

时间:2017-03-22 14:38:23

标签: c++ char strcat

代码:

| USERID  |    Metric   |  Score  | 
----------------------------------
| 20511   |     Sales   |  12     | 
| 20511   |     Leads   |  9      | 
| 20511   |     Hours   |  8      | 
| 20694   |     Sales   |  10     | 
| 20694   |     Hours   |  7.5    |

这样做的正确方法是什么? 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

使用strcat(dateTime, incoming[0-1]);,其中incoming[0-1]incoming[-1]相同会导致未定义的行为。实际上incoming[-1]是位于数组索引-1的单个字符,这是错误的原因,编译器无法将单个字符(char)转换为char指针({{ 1}})。

改为使用:

char*

注意strncat(dateTime, incoming, 2); 中的n。这将连接从strncatincoming的最多两个字符,并放置一个终止的空字符。

<强>扩展

您可以将其扩展为:

dateTime

其中strncat(dateTime, incoming + n, l); 是起始索引,即之前为零,n是要复制的最大长度。

示例

因此,如果要将索引3和4的字符连接起来,请执行以下操作:

l

答案 1 :(得分:1)

确切的错误消息来自incoming[0-1]属于char类型的事实,但strcat期望const char*作为第二个参数,这是指向{的指针{1}}。

此处附加char不是问题,因为非const值总是可以转换为const值。

查看有关const无效的其他答案/评论。