Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:从‘;char’;至‘;常量字符*_C++_String_Char - Fatal编程技术网

C++ 错误:从‘;char’;至‘;常量字符*

C++ 错误:从‘;char’;至‘;常量字符*,c++,string,char,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

在下面的代码中

#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
        }
    }
}
#包括//atoi
#包括
使用名称空间std;
名称空间罗马
{
字符串转换(int输入)
{
字符串inputStr=to_字符串(输入);
如果(inputStr.size()=4)
{
返回字符串(atoi(inputStr[0]),'M')+convert(stoi(inputStr.substr(1,npos));//此处出错
}
}
}

我在
返回
行中得到了名义上的错误。我认为这与atoi函数有关。它采用
常量char*
作为输入值。我需要知道如何将
inputStr
中的第一个字符转换为
const char*
。我尝试将
.c_str()
附加到
inputStr[0]
的末尾,但这导致了对非类类型char的成员c_str的请求出现错误
。有人有什么想法吗?

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

您需要
inputStr.c\u str()

编辑:如果您真的只需要第一个字符而不是整个字符串,那么
inputStr.substr(0,1).c_str()
将完成此工作。

您正在索引

inputStr[0]
抓住一个字符。这不是字符串,atoi()无法消化它

尝试构造一个由一个字符组成的字符串,并用它调用atoi()

大概

atoi( string(1, inputStr[0]) );
可能有用。但是,这不是唯一或最好的方法,因为它会创建一个临时字符串并将其丢弃


但是,它会让您继续。

您似乎希望对整个字符串执行atoi()。如果是这样的话,前面的答案应该可以。与
substr
不同,只需
inputStr[0]-“0”
即可将单个数字转换为其数值。错误消息非常清楚。获取一个C++并读取它。