在函数中传递参数的c ++给出错误

时间:2019-06-07 00:03:08

标签: c++ class

我正在编写一个将罗马数字转换为十进制的类。 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

2 个答案:

答案 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();