使用 C++ 中的特殊格式将字符串拆分为字符串

Posted

技术标签:

【中文标题】使用 C++ 中的特殊格式将字符串拆分为字符串【英文标题】:Split a string a string using special formatting in c++ 【发布时间】:2016-06-19 21:01:16 【问题描述】:

我正在尝试像这样拆分字符串:

"aaaaaaaa"\1\"bbbbbbbbb"

加上引号,以获得aaaaaaa bbbbbbbbb。

我找到了不同的方法来分割字符串,但是引号和斜杠的存在会导致很多问题。

例如,如果我使用 string.find 我不能使用 string.find("\1\");

有人知道如何帮助我吗?谢谢

【问题讨论】:

您需要在代码中转义\`'\\' 只需使用 string.find("1");因为 \" 用于在字符串 ant 中标记 qoutes,所以它被称为转义序列字符串。只需将 \" 视为字符串中的 "! 【参考方案1】:
#include <iostream>
#include <string>
#include <regex>

int main()

    // build a test string and display it
    auto str = std::string(R"text("aaaaaaaa"\1\"bbbbbbbbb")text");
    std::cout << "input : " << str << std::endl;

    // build the regex to extract two quoted strings separated by "\1\"

    std::regex re(R"regex("(.*?)"\\1\\"(.*?)")regex");
    std::smatch match;

    // perform the match
    if (std::regex_match(str, match, re))
    
        // print captured groups on success
        std::cout << "matched : " << match[1] << " and " << match[2] << std::endl;
    

预期结果:

input : "aaaaaaaa"\1\"bbbbbbbbb"
matched : aaaaaaaa and bbbbbbbbb

【讨论】:

以上是关于使用 C++ 中的特殊格式将字符串拆分为字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 istringstream 将字符串拆分为整数

有没有一种简单的方法可以将由空格字符分隔的一行输入拆分为 C++ 中的整数?

C ++函数将字符串拆分为单词

C++ 11 正则表达式未按预期返回组

使用空格将字符串拆分为向量 c++ 错误

C ++中的拆分字符串[重复]