我需要将字符串中的两个值交换为一个(c++)

I need to swap out two values in a string for one (C++)

本文关键字:两个 c++ 一个 交换 字符串      更新时间:2023-10-16

我正在制作罗马数字转换器。除了最后还有一个问题,我已把一切都解决了。

字符串看起来像IVV

我需要把它改成IX

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

使用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;
}

您可以使用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;
}