我正在编写一个将罗马数字转换为十进制的类。 Roman Numeral来自用户输入,然后传递给class函数,但它始终显示错误。
#include<iostream>
#include<string>
using namespace std;
class romanType {
public:
romanType(); //constructor
void conversion(string numeral) {
int len = strlen(numeral);
for (int i = 0; i < len; i++)
cout << numeral[i];
}
};
#pragma once
#include<iostream>
#include"roman_class.h"
using std::cout;
using std::cin;
int main() {
romanType number; //declaring an instance of the class
string numeral;
cout << "Enter Roman Numeral to be converted";
cin >> numeral;
number.conversion(numeral);
}
对于“ int len = strlen(numeral);”,我一直收到这些错误:
Error (active) E0413 no suitable conversion function from "std::string" to "const char *" exists Roman_Numeral
Error C2664 'size_t strlen(const char *)': cannot convert argument 1 from 'std::string' to 'const char *' Roman_Numeral
答案 0 :(得分:0)
strlen
是要与C样式字符数组(例如char x[10]
)一起使用的函数。
std::string
是具有.size()
方法的类。您可以通过替换以下内容来获取字符串的长度(并修复您的代码):
int len = strlen(numeral);
使用
int len = numeral.size();
此外,按照C ++规则,容器(包括字符串)的大小不能为负(显然)。使用的类型为size_t
,而不是int
。您可以将其视为无符号整数类型,该整数类型可以表示您可以存储的最大对象的大小。只是为了方便,您的代码也将与int
一起使用。
答案 1 :(得分:0)
要么像下面这样转换字符串:
int len = strlen((const char*)numeral.c_str());
或使用字符串方法size():
int len = numeral.size();