免责声明:我只是在最近才开始使用C++,我仍然试图理解它的基本概念。
例如,我们必须声明如下:
std::cout << "^\\s+Encryption key:(\\w+)" << '\n' <<
"^\\s+Quality=(\\d+)" << '\n' <<
"^\\s+E?SSID:\"([[:print:]]+)\"" << '\n' <<
"^\\s+ssid=\"([[:print:]]+)\"" << '\n';如何将其转换为单个原始字符串文字?我试着尽可能多地阅读这个主题,但似乎想不出该怎么做。有人能指出我的正确方向吗?
我知道)"不能直接在RSL中使用。
发布于 2018-09-14 20:21:30
您可以在原始字符串文本中使用(和)。您只需指定开始/停止分隔符序列,这样就不会在字符串中得到一个带)的分隔符序列。空字符总是附加在后面。详情请参见cppreference首选项字符串文字文档。
在下面的示例中,###是分隔符,但是您可以任意选择(除非这些字符是不允许的:() \,长度必须是16个字符或更少)。只需选择一些不会导致您意外提前终止文字的内容。
使用###作为分隔符,编译器将继续使用文本作为原始字符串文字的一部分,直到出现组合)###"为止,因此从技术上讲,您可以在文本中使用)###而不终止原始字符串文本,但我认为最好安全地使用它--如果在该序列之后恰好有一个",您可能会无意中过早地终止该文本。我还避免了在本例中的文本- (正文中有分隔符后面跟着###(的情况。这是允许的,但可能会让阅读节目的人感到困惑。
所以这可能是
std::cout << R"###(^\s+Encryption key:(\w+)
^\s+Quality=(\d+)
^\s+E?SSID:"([[:print:]]+)"
^\s+ssid="([[:print:]]+)"
)###" ;在原始字符串文本中,不转义字符,因此在示例中,\\变成\,\"变成",\n变成实际的换行符。
https://stackoverflow.com/questions/52338617
复制相似问题