C++ 如何将字符串分成若干部分-罗马数字

C++ 如何将字符串分成若干部分-罗马数字,c++,roman-numerals,C++,Roman Numerals,我想把一个字符串分成几个部分来读罗马数字。例如,如果用户输入 "XI" 我希望程序能够理解I是1,X是10,这样的数据验证才能工作 if(string roman == "X") int roman += 10; etc. 要访问字符串中的单个字符,请使用方括号: int num = 0; char r = roman[0]; if (r == 'X') { num += 10; } 以上绝不是一个完整的例子,但应该足以让你开始。本例查看字符串中的第一个字符roman(字符从左侧

我想把一个字符串分成几个部分来读罗马数字。例如,如果用户输入

"XI"
我希望程序能够理解I是1,X是10,这样的数据验证才能工作

if(string roman == "X") int roman += 10;
 etc.

要访问字符串中的单个字符,请使用方括号:

int num = 0;
char r = roman[0];
if (r == 'X') {
    num += 10;
}

以上绝不是一个完整的例子,但应该足以让你开始。本例查看字符串
中的第一个字符roman
(字符从左侧开始编号,索引为0)。它检查字符是否为
'X'
,如果是,则将
num
变量增加10。

函数用于从您不知道的语言执行此操作,将视为伪代码:

int from_roman_numeral(string val) {
    val = upper_case(val);
    if(val == "N")
        return 0;
    status neg = False;
    if(val[0] == '-') {
        neg = True;
        val = val[1..];
    }
    int out = 0;
    int last = 0;
    int array values = allocate(127);
    values['M'] = 1000;
    values['D'] = 500;
    values['C'] = 100;
    values['L'] = 50;
    values['X'] = 10;
    values['V'] = 5;
    values['I'] = 1;
    int value;
    int next;
    for(int idx = 0, int len = strlen(val); idx < len; idx++) {
        value = values[val[idx]];
        unless(value)
            error("'" + val + "' is not a valid Roman numeral sequence");
        if(idx < len - 1 && (next = values[val[idx + 1]]) && next > value) {
            out += next - value;
            idx++;
        } else {
            out += value;
        }
    }
    return neg ? -out : out;
}
int来自罗马数字(字符串val){
val=大写字母(val);
如果(val=“N”)
返回0;
状态负=假;
如果(val[0]='-'){
负=真;
val=val[1..];
}
int out=0;
int last=0;
int数组值=分配(127);
数值['M']=1000;
数值['D']=500;
值['C']=100;
数值['L']=50;
数值['X']=10;
值['V']=5;
值['I']=1;
int值;
int-next;
for(int-idx=0,int-len=strlen(val);idxvalue){
out+=下一个值;
idx++;
}否则{
out+=值;
}
}
返回负?-输出:输出;
}

我不明白“-”字符来自哪里。。。罗马数字中没有负号,我支持它是为了我当地的目的。如果您不喜欢,请将其撕下。注意赋值
=
与比较
=
,以及字符串
“X”
和字符
'X'
之间的比较。另外,'
int-roman+=10
'将10添加到一个不确定的值中-不太可能是您想要的值,而且它隐藏了在“
if
”语句之外累积的任何值的声明。这只是一个简短的示例,以便人们能够理解我的意思:/但是关于赋值运算符,一个输入错误,您是对的。