【问题标题】:Need help converting a string to a char in c++ ---- ERROR A value of type "const char *" cannot be used to initialize an entity of type "char"需要帮助在 c++ 中将字符串转换为 char ---- 错误“const char *”类型的值不能用于初始化“char”类型的实体
【发布时间】:2020-05-27 15:50:02
【问题描述】:
    bool isValidPrice(string s) 
{
    char c = s.c_str();
    return true;
}

我正在尝试将字符串 s 转换为 char 但我收到错误

“const char *”类型的值不能用于初始化“char”类型的实体

如何将字符串 s 成功转换为 char c?

编辑**** 我想从字符串中取出每个单独的字符并将整个字符串转换为 c 字符串,这样我就可以使用 cctype 来使用 c 字符串函数。

【问题讨论】:

  • 您实际上需要做什么? char 是单个字符。所以 char c = s[0]; 例如对于获取字符串的第一个字符是有效的。但是使用c_str 将是const char *c = s.c_str();
  • 我想把每个单独的字符从字符串中转换成 c 字符串

标签: c++ string char c-strings


【解决方案1】:

您不能使用作为地址的指针(32 位或 64 位,具体取决于您的配置)加载作为值的字符(通常为 8 位)(s.c_str() 返回字符串的起始地址)。如果你想从字符串中提取某个字符,比如索引 0 处的一个,你可以这样做:

char c = s[0];

假设字符串 s 不为空

【讨论】:

  • 这是对这个问题的一个很好的回答,但我认为您所说的“哪个是地址”可能更清楚——地址来自哪里?建议editing 增加一些清晰度:)
  • @jtbandes:已添加解释。
【解决方案2】:

从方法名称中我了解到您想要验证产品的价格。但是这段代码不需要检查。因为如果 s = "&" 那么你的代码返回 true 应该是 false。此外,您只检查第一个字符。这样对吗?我假设您将以有效的整数格式给出。

bool isValidPrice(string s) 
{
    if(s.length() == 0) 
        return false;

    char c = s[0];
    return true;
}

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多