Jaki jest odpowiednik startswitch Javy w C++?

0

Cześć.

Mam za zadanie napisać metodę zamieniającą liczby rzymskie na arabskie. W javie poszło mi dość łatwo i teraz próbuję przepisać tą metodę do c++ ale mam właśnie problem z metodą startswith jak ją zastąpić w c++. Tak to wygląda w javie:

public class RzymArab{

private static String[] rzymskie = {"M", "CM", "D", "CD", "C","XC", "L", "XL", "X", "IX", "V", "IV", "I"};
private static int[] arabskie   = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

	public static int rzym2arab(String rzym) throws RzymArabException{

		rzym = rzym.toUpperCase();
		int wyjscie = 0;
		int index = 0;
		if(rzym.length() == 0){
			throw new RzymArabException("Nie podano liczby.");
		}
		for (int i = 0; i < rzymskie.length; i++){
			while (rzym.startsWith(rzymskie[i], index)){
				wyjscie += arabskie[i];
				index += rzymskie[i].length();
			}
		}  
		return wyjscie;
	} 
}

Jest jakiś odpowiednik w c++? Albo może jest jakiś inny sprytny trick?

1

użyj string::substr() i operatora ==.

2

Rozwijając odpowiedź @kq:

#include <iostream>
using namespace std;

int main() {
	string whole, part;
	whole = "TestString";
	part = "Test";
	cout << "Comp whole vs part: " << (whole.compare(0, part.size(), part)) << endl;
	cout << "Comp part vs whole: " << (part.compare(0, whole.size(), whole)) << endl;
	return 0;
}

Wynik:

Comp whole vs part: 0
Comp part vs whole: -6

http://ideone.com/efIku9

1 użytkowników online, w tym zalogowanych: 0, gości: 1