使用 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 将字符串拆分为整数