gpt4 book ai didi

c++ - 在 C++ 中解释转义的 unicode 字符

转载 作者:行者123 更新时间:2023-11-30 04:06:48 27 4
gpt4 key购买 nike

假设我有一个名为 test.txt 的文件,其中包含以下文本:

\u003cdiv style=\"text-align: left;\" trbidi=\"on\"\u003e\nAppending is not creating

如果我想通过 char 读取 char,它看起来像这样:

代码1:从文件中读取

ifstream file;
file.open("test.txt");
string line;
while (getline(file, line)){
cout << line<< endl; // prints \u003cdiv style=\"text-align: left;\" trbidi=\"on\"\u003e\nAppending is not creating
}

但是,如果我在代码中声明相同的字符串,转义字符将被检测并打印出来。

代码2:简单字符串

string line2 ("\u003cdiv style=\"text-align: left;\" trbidi=\"on\"\u003e\nAppending is 
cout << line2<< endl; // prints <div style="text-align: left;" trbidi="on">\n Appending is not creating

这是完全正常的,因为 \ 是 C++ 字符串的转义字符。

这提出了一个问题:是否有可能与第一个代码获得相同的结果(即,让每一行都像代码 2 中定义的字符串一样被解释)?

最佳答案

STL 类 string 没有执行此操作的任何函数。您必须实现自己的函数以将转义字符表达式更改为其正确的转义字符。这个函数看起来像这样:

string parse_escaped_characters(string s) {
string s2;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '\\') {
switch (s[i+1]) {
case 'n': s2 += '\n'; ++i; break;
case '\"': s2 += '\"'; ++i; break;
//and so on...
}
}
else s2 += s[i];
}
return s2;
}

或者您可以搜索一个库来处理包含此功能的字符串。

关于c++ - 在 C++ 中解释转义的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com