【问题标题】:Is there any way to add char in string?有没有办法在字符串中添加字符?
【发布时间】:2021-04-25 20:07:18
【问题描述】:

有字符串"cdfrcs"。我想得到字符串*c*d*f*r*c*s(在每个符号前添加星号)。我该怎么做?

【问题讨论】:

标签: c++ string char


【解决方案1】:

您可以使用regex_replace 在input 字符串中的每个字符前添加一个星号:

auto result = std::regex_replace(input, std::regex{"(.)"}, "*$1");

在正则表达式 (.) 中,. 匹配每个字符,() 在捕获组 1 中捕获它。

替换字符串*$1 指定将每个捕获的字符$1 替换为前面的*。

这是demo。

【讨论】:

  • 兄弟我用这种方式,但结果并不理想。为什么? #include #include #include using namespace std; int main() { 字符串 s;辛 >> s;自动结果 = regex_replace(s, regex{ "(.)" }, "*$1"); cout
  • @YoungCoder 我不知道。 s 里面有空格吗?它究竟是如何不起作用的?
  • codeforce i>s 是结果。它不会移动字母。在每个字母前只添加星号
  • @YoungCoder 我们不会去异地测试程序。你需要edit这个问题来清楚地解释结果应该是什么。目前,它说“在每个符号前添加星号”,并没有提及“移动”。
  • 哦,我的错误很抱歉让您感到困惑。从“codeforces”这个词中,我必须删除元音,其余字母必须按顺序排列,但前面有星星。例如,从“codeforces”我们得到“cdfrcs”,输出必须带有星号“cdfrcs”,字母前面有星号。谢谢兄弟的关注和时间。希望现在一切都清楚了
【解决方案2】:

如果您不想使用正则表达式,可以使用以下方法:

std::string a = "cdfrcs";
std::string b = "";
for(char c : a) {
    b += std::string("*") + c;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多