错误:从“字符”到“常量字符*”的转换无效
error: invalid conversion from ‘char’ to ‘const 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
。有人有一些想法吗?
> inputStr[0]
是一个字符(inputStr
的第一个字符(; atoi
需要一个指向以 null 结尾的字符序列的指针。
你需要inputStr.c_str()
.
编辑:如果你真的只想要第一个字符而不是整个字符串,那么inputStr.substr(0, 1).c_str()
会完成这项工作。
您正在编制索引
inputStr[0]
获得单个字符。这不是一个字符串,atoi(( 无法消化它。
尝试构造一个字符的字符串并用它调用 atoi((。
像这样,
atoi( string(1, inputStr[0]) );
可能有效。但是,这不是唯一或最好的方法,因为它会创建一个临时字符串并将其丢弃。
但是,它会让你继续前进。
相关文章:
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- 成本字符*类型的非常量引用的无效初始化,并且来自常量字符*类型的临时引用
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 构建 NFIQ2 时从"字符"到"字符*"的转换无效
- 跨平台套接字发送,Linux 上的缓冲区常量无效* Windows上的常量字符*,最佳处理方式
- 二进制表达式的操作数无效("常量字符*"和"常量字符*")
- 答案审查 - 从"常量字符*"到"字符"的转换无效
- 从字符到康斯特* 字符的转换无效,代码有什么问题?
- 如何替换/忽略 C stdio.h getline() 中的无效 Unicode/UTF8 字符
- 如何使用ISTream对象输入多个字符到对象的数组中?(and 0作为哨兵值.下面的我的代码将无效)
- CIN是否将输入流中的无效字符取用
- 从字符 * 到 int 的转换无效
- 如何将常量无效*转换为无符号字符*
- 简短的:从字符到常量字符*的转换无效
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- 从"常量字符*"到"字符*"[-允许]的转换无效;VTK-7.1.1 编译错误
- 指针与无效字符合法的比较
- 字符和常量字符[2] 类型的操作数无效到二进制运算符
- 读取文本文件会导致缓冲区末尾的字符无效
- 转换常量无符号字符无效