错误:从“字符”到“常量字符*”的转换无效

error: invalid conversion from ‘char’ to ‘const char*

本文关键字:字符 无效 转换 常量字符 错误 常量      更新时间:2023-10-16

在下面的代码中

#include <stdlib.h> //atoi
#include <string>   
using namespace std;
namespace roman
{
    string convert( int input )
    {
        string inputStr = to_string(input);
        if(inputStr.size()==4)
        {
            return string( atoi( inputStr[0] ), 'M')+convert(stoi(inputStr.substr(1, npos)));//error here
        }
    }
}

我在return行中收到名义错误。我认为它与 atoi 函数有关。它采用const char*作为输入值。我需要知道如何将inputStr中的第一个字符变成const char*.我尝试将.c_str()附加到inputStr[0]末尾,但这给了我错误request for member c_str which is of non-class type char。有人有一些想法吗?

> inputStr[0] 是一个字符(inputStr的第一个字符(; atoi需要一个指向以 null 结尾的字符序列的指针。

你需要inputStr.c_str().

编辑:如果你真的只想要第一个字符而不是整个字符串,那么inputStr.substr(0, 1).c_str()会完成这项工作。

您正在编制索引

inputStr[0]

获得单个字符。这不是一个字符串,atoi(( 无法消化它。

尝试构造一个字符的字符串并用它调用 atoi((。

像这样,

atoi( string(1, inputStr[0]) );

可能有效。但是,这不是唯一或最好的方法,因为它会创建一个临时字符串并将其丢弃。

但是,它会让你继续前进。