You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++编译报invalid conversion from 'const char*' to 'int'错误求助

问题排查

1 编译报错原因

你遇到的invalid conversion from 'const char*' to 'int'报错由strchr函数的参数使用错误导致:

  • 标准库strchr的函数原型为char* strchr(const char* str, int c),第二个参数要求传入单个待查找的字符,你代码中传入了字符串常量"aeiou"(类型为const char*),编译器尝试将指针转换为int类型匹配参数要求,因此抛出类型转换错误。

2 其他逻辑错误

  • for循环条件书写错误:代码中i=0是赋值操作,会直接将i赋值为0且循环条件直接为假,循环完全不会执行,正确的倒序遍历边界条件应为i >= 0
  • 元音判断逻辑错误:你需要判断当前遍历到的字符s[i]是否为元音,正确写法为strchr("aeiou", s[i]) == NULL,该表达式为真时说明s[i]不是元音,属于待删除的辅音
  • 删除字符逻辑错误:删除下标为i的字符,需要将i+1位置开始的字符串复制到i位置,正确写法为strcpy(s + i, s + i + 1)
  • 缺少跳出循环逻辑:找到最后一个辅音并删除后需要立即终止循环,否则会继续向前遍历删除前面的辅音,不符合需求
修正后代码
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char s[256];
    int i;
    cin.get(s, 256);
    for(i = strlen(s) - 1; i >= 0; i--)
    {
        // 如需适配带末尾空格的输入场景,可取消下一行注释,需额外引入<cctype>头文件
        // if (!isalpha(s[i])) continue;
        // 判断当前字符为辅音
        if (strchr("aeiou", s[i]) == NULL)
        {
            strcpy(s + i, s + i + 1);
            break;
        }
    }
    cout << s;
    return 0;
}

测试输入mare frig saci时,输出为mare frig sai,符合预期。

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:06:04