我正在制作一个罗马数字转换器。除非最后有一个问题,否则我已经弄明白了。
字符串看起来像IVV
我需要将其IX
我在每个新字母处拆分字符串,然后将它们重新附加,然后使用if语句查看它是否包含2" V" s。我想知道是否有更简单的方法来做到这一点。
答案 0 :(得分:2)
使用std::string
可以极大地帮助您,因为您可以利用其搜索和替换功能。您需要从find
函数开始,该函数允许您搜索字符或字符串,并返回索引,其中您搜索的内容存在,或npos
如果搜索失败。
然后,您可以调用replace
将find
返回的索引,要替换的字符数以及替换范围的字符传递给它。
以下代码可以帮助您入门。
#include <string>
#include <iostream>
int main()
{
std::string roman("IVV");
// Search for the string you want to replace
std::string::size_type loc = roman.find("VV");
// If the substring is found replace it.
if (loc != std::string::npos)
{
// replace 2 characters staring at position loc with the string "X"
roman.replace(loc, 2, "X");
}
std::cout << roman << std::endl;
return 0;
}
答案 1 :(得分:-2)
您可以使用std string
find
和rfind
操作,这些操作会找到输入参数的第一次和最后一次出现的位置,检查这些参数是否相等并且您将知道
回答更新
#include <string>
int main()
{
std::string x1 = "IVV";
if (x1.find('V') !=x1.rfind('V'))
{
x1.replace(x1.find('V'), 2, 'X');
}
return 0;
}