gpt4 book ai didi

c++ - 使用基于范围的 For 循环和 Char 指针字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:51 25 4
gpt4 key购买 nike

<分区>

我是 C++11 的新手,坦率地说,我已经一年多没用过 C++,所以一开始我有点生疏。我正在根据旧的大学教科书做一些练习,在尝试迭代 char 指针字符串时遇到了问题(例如:char * c = "a string";)。我在谷歌上找不到任何有用的东西。我已经习惯了 Java,其中 foreach 循环可以遍历任何集合。我知道指针是如何工作的,但是我从 C++ 休假让我对实际使用它们的语法一无所知。谁能告诉我为什么以下代码(特别是 convert() 函数)会导致编译错误,其中“开始”和“结束”未在此范围内声明?

Ex12_01_RomanType.h

#ifndef EX12_01_ROMANTYPE_H
#define EX12_01_ROMANTYPE_H

class RomanType {
public:
RomanType();
RomanType(char * n);
virtual ~RomanType();

char * toString();
int getValue();
private:
char * numeral;
int decimal;

void convert();
};

#endif // EX12_01_ROMANTYPE_H

Ex12_01_RomanType.cpp

#include "Ex12_01_RomanType.h"

RomanType::RomanType() {
// Default Constructor
numeral = "I";
decimal = 0;
convert();
}

RomanType::RomanType(char * n) {
// Specific Constructor
numeral = n;
decimal = 0;
convert();
}

RomanType::~RomanType() {
delete numeral;
}

char * RomanType::toString() {
return numeral;
}

int RomanType::getValue() {
return decimal;
}

void RomanType::convert() {
/* Iterates over each character in the numeral string and adds that
character's value to the decimal value. This method should only
be called once during the constructor. */
for(char c : numeral) {
if(c == 'M') decimal += 1000;
else if(c == 'D') decimal += 500;
else if(c == 'C') decimal += 100;
else if(c == 'L') decimal += 50;
else if(c == 'X') decimal += 10;
else if(c == 'V') decimal += 5;
else if(c == 'I') decimal += 1;
else decimal += 0;
}
}

抱歉,如果这个问题对某些人来说似乎很基础。 Java 把我宠坏了。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com