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++并读取它。