我需要将一个字符串中的两个值换成一个(C ++)

时间:2014-06-17 19:56:19

标签: c++ string split append

我正在制作一个罗马数字转换器。除非最后有一个问题,否则我已经弄明白了。

字符串看起来像IVV

我需要将其IX

我在每个新字母处拆分字符串,然后将它们重新附加,然后使用if语句查看它是否包含2" V" s。我想知道是否有更简单的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

使用std::string可以极大地帮助您,因为您可以利用其搜索和替换功能。您需要从find函数开始,该函数允许您搜索字符或字符串,并返回索引,其中您搜索的内容存在,或npos如果搜索失败。

然后,您可以调用replacefind返回的索引,要替换的字符数以及替换范围的字符传递给它。

以下代码可以帮助您入门。

#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 findrfind操作,这些操作会找到输入参数的第一次和最后一次出现的位置,检查这些参数是否相等并且您将知道

回答更新

#include <string>

int main()
{
    std::string x1 = "IVV";
    if (x1.find('V') !=x1.rfind('V'))
    {
        x1.replace(x1.find('V'), 2, 'X');
    }
    return 0;
}