错误:从'char'到'const char *的无效转换

时间:2014-12-21 16:18:16

标签: c++ string char

在以下代码中

#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。有人有想法吗?

2 个答案:

答案 0 :(得分:3)

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

您需要inputStr.c_str()

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

答案 1 :(得分:0)

您正在编制索引

inputStr[0]

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

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

类似的东西,

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

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

但是,它会帮助你。