小编Mad*_*ner的帖子

C++正则表达式对长序列的段错误

我正在解析stackoverflow转储,并在这个看似无辜的问题上提出了一个小的,几乎看不见的细节,它在文本的末尾有22311个空格.

我正在使用std :: regex(不知何故,它们对我来说比boost :: regex更好)用单个空格替换所有连续的空格,如下所示:

std::regex space_regex("\\s+", std::regex::optimize);
...
std::regex_replace(out, in, in + strlen(in), space_regex, " ");
Run Code Online (Sandbox Code Playgroud)

SIGSEGV出现了,我已经开始调查了.

测试代码:

#include <regex>
...
std::regex r("\\s+",  std::regex::optimize);
const char* bomb2 = "Small text\n\nwith several\n\nlines.";
std::string test(bomb2);
for (auto i = 0; i < N; ++i) test += " ";

std::string out = std::regex_replace(test.c_str(), r, " ");
std::cout << out << std::endl;
Run Code Online (Sandbox Code Playgroud)

for(gcc 5.3.0)

$ g++ -O3 -std=c++14 regex-test.cpp -o regex-test.out
Run Code Online (Sandbox Code Playgroud)

NSIGSEGV出现之前的最大值是21818(对于这个特定的字符串),以及

$ g++ -O0 -std=c++14 regex-test.cpp -o regex-test.out …
Run Code Online (Sandbox Code Playgroud)

c++ regex gcc clang c++14

16
推荐指数
1
解决办法
1665
查看次数

通过.NET使用uTorrent Web API

我正在尝试使用Web API从uTorrent获取种子列表.获得所需的令牌可以:

WebClient client = new WebClient() { Credentials = new NetworkCredential(UserName, pass) };
StreamReader Reader = new StreamReader(client.OpenRead("http://localhost:" + port + "/gui/token.html"));
string token = Reader.ReadToEnd();
token = token.Split('>')[2].Split('<')[0]; 
// token is now something like 3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用它来获取种子列表时:

Reader = new StreamReader(client.OpenRead("http://localhost:" + port + "/gui/?list=1&token=" + token));
Run Code Online (Sandbox Code Playgroud)

我得到的是"错误400错误请求".

我试图手动获取令牌.在浏览器页面"http:// localhost:30303/gui /?list = 1&token = 3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA"打开它应该,但在C#中没有任何变量的相同链接我仍然得到错误400.有趣的部分是如果关闭令牌认证WebClient加载页面完美有和没有

"&token=3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA"
Run Code Online (Sandbox Code Playgroud)

但默认情况下启用了令牌身份验证,因此我和任何应用都应该使用它.是的,WebRequest/HttpWebRequest也没有帮助.

PS抱歉我的英语,我从来没能使它正常工作

.net c# token utorrent asp.net-web-api

4
推荐指数
1
解决办法
4866
查看次数

标签 统计

.net ×1

asp.net-web-api ×1

c# ×1

c++ ×1

c++14 ×1

clang ×1

gcc ×1

regex ×1

token ×1

utorrent ×1