diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..530957f
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,5 @@
+# Rules in this file were initially inferred by Visual Studio IntelliCode from the G:\C语言\爬虫 codebase based on best match to current usage at 2022/2/21
+# You can modify the rules from these initially generated values to suit your own policies
+# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
+[*.cs]
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..72d52c7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+
爬虫
+
+ 开发语言:
+
+ C++
+ 开发工具:
+
+ Visual Studio 2022
+
+ 功能介绍:
+
+
+ 支持爬取http协议和https协议网页的所有图片
+
+ 使用说明:
+
+
+ 爬取到的所有图片都会保存到G盘的图片文件夹中
diff --git a/x64/Debug/libcrypto-1_1-x64.dll b/x64/Debug/libcrypto-1_1-x64.dll
new file mode 100644
index 0000000..afa17cc
Binary files /dev/null and b/x64/Debug/libcrypto-1_1-x64.dll differ
diff --git a/x64/Debug/libssl-1_1-x64.dll b/x64/Debug/libssl-1_1-x64.dll
new file mode 100644
index 0000000..3b0b02b
Binary files /dev/null and b/x64/Debug/libssl-1_1-x64.dll differ
diff --git "a/x64/Debug/\347\210\254\350\231\253.exe" "b/x64/Debug/\347\210\254\350\231\253.exe"
new file mode 100644
index 0000000..74af5db
Binary files /dev/null and "b/x64/Debug/\347\210\254\350\231\253.exe" differ
diff --git "a/x64/Debug/\347\210\254\350\231\253.exp" "b/x64/Debug/\347\210\254\350\231\253.exp"
new file mode 100644
index 0000000..382f736
Binary files /dev/null and "b/x64/Debug/\347\210\254\350\231\253.exp" differ
diff --git "a/x64/Debug/\347\210\254\350\231\253.lib" "b/x64/Debug/\347\210\254\350\231\253.lib"
new file mode 100644
index 0000000..0216497
Binary files /dev/null and "b/x64/Debug/\347\210\254\350\231\253.lib" differ
diff --git "a/x64/Debug/\347\210\254\350\231\253.pdb" "b/x64/Debug/\347\210\254\350\231\253.pdb"
new file mode 100644
index 0000000..933ee78
Binary files /dev/null and "b/x64/Debug/\347\210\254\350\231\253.pdb" differ
diff --git "a/x64/Release/\347\210\254\350\231\253.exe" "b/x64/Release/\347\210\254\350\231\253.exe"
new file mode 100644
index 0000000..952751a
Binary files /dev/null and "b/x64/Release/\347\210\254\350\231\253.exe" differ
diff --git "a/x64/Release/\347\210\254\350\231\253.exp" "b/x64/Release/\347\210\254\350\231\253.exp"
new file mode 100644
index 0000000..70af983
Binary files /dev/null and "b/x64/Release/\347\210\254\350\231\253.exp" differ
diff --git "a/x64/Release/\347\210\254\350\231\253.lib" "b/x64/Release/\347\210\254\350\231\253.lib"
new file mode 100644
index 0000000..5ac5d3d
Binary files /dev/null and "b/x64/Release/\347\210\254\350\231\253.lib" differ
diff --git "a/x64/Release/\347\210\254\350\231\253.pdb" "b/x64/Release/\347\210\254\350\231\253.pdb"
new file mode 100644
index 0000000..78071e4
Binary files /dev/null and "b/x64/Release/\347\210\254\350\231\253.pdb" differ
diff --git "a/\347\210\254\350\231\253.sln" "b/\347\210\254\350\231\253.sln"
new file mode 100644
index 0000000..d2743c6
--- /dev/null
+++ "b/\347\210\254\350\231\253.sln"
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.32112.339
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "爬虫", "爬虫\爬虫.vcxproj", "{C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Debug|x64.ActiveCfg = Debug|x64
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Debug|x64.Build.0 = Debug|x64
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Debug|x86.ActiveCfg = Debug|Win32
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Debug|x86.Build.0 = Debug|Win32
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Release|x64.ActiveCfg = Release|x64
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Release|x64.Build.0 = Release|x64
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Release|x86.ActiveCfg = Release|Win32
+ {C2D0D86A-1D78-45CD-A1BF-A73EC06CFB5B}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {46C43DE5-59D3-44AC-8B4D-0435992A1061}
+ EndGlobalSection
+EndGlobal
diff --git "a/\347\210\254\350\231\253/x64/Debug/CodeAnalysisResultManifest.txt" "b/\347\210\254\350\231\253/x64/Debug/CodeAnalysisResultManifest.txt"
new file mode 100644
index 0000000..4b3609a
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/CodeAnalysisResultManifest.txt" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/vc.nativecodeanalysis.all.xml" "b/\347\210\254\350\231\253/x64/Debug/vc.nativecodeanalysis.all.xml"
new file mode 100644
index 0000000..83f4184
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/vc.nativecodeanalysis.all.xml"
@@ -0,0 +1,979 @@
+
+
+
+
+ 0
+ 0
+
+ 6800
+ 通过 /analyze:ruleset 或 /analyze:external:ruleset 选项指定的规则集文件无法成功分析,将被忽略。
+
+
+ 0
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 85
+ 5
+
+ 26440
+ 函数 file_path 可以声明为 noexcept (f.6)。
+ file_path
+ ?file_path@@YAXXZ
+ 85
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 159
+ 7
+
+ 6031
+ 返回值被忽略: “sscanf”。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 152
+ 14
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 152
+ 14
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 162
+ 1
+
+ 26401
+ 请勿删除不是 owner<T> 的原始指针(i.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 162
+ 1
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 157
+ 10
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 159
+ 7
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 160
+ 7
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 161
+ 7
+
+ 26485
+ 表达式 g_Object: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+ 6387
+ "p->h_addr_list[0]" 可以是 "0"。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+ 1
+ 4
+
+ mspft
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 170
+ 9
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 171
+ 7
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 174
+ 8
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 175
+ 12
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 178
+ 10
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 179
+ 7
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 11
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 32
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 188
+ 8
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 11
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 34
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 197
+ 13
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 178
+ 27
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 32
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 185
+ 9
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 34
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 192
+ 46
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 167
+ 5
+
+ 26440
+ 函数 Connect 可以声明为 noexcept (f.6)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 192
+ 48
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 202
+ 37
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 207
+ 5
+
+ 26440
+ 函数 SSL_Connect 可以声明为 noexcept (f.6)。
+ SSL_Connect
+ ?SSL_Connect@@YA_NXZ
+ 207
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 251
+ 8
+
+ 26485
+ 表达式 temp1: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 254
+ 11
+
+ 26485
+ 表达式 g_Object: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 255
+ 13
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 267
+ 25
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 269
+ 14
+
+ 26482
+ 只使用常量表达式在数组中编制索引(bounds.2)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 270
+ 10
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 272
+ 8
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 269
+ 12
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 264
+ 6
+
+ 26494
+ 未初始化变量 buff。始终初始化对象(type.5)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+ buff
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 17
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 17
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 13
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 13
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 289
+ 11
+
+ 26401
+ 请勿删除不是 owner<T> 的原始指针(i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 289
+ 11
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 33
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 283
+ 21
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 26
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 287
+ 20
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 296
+ 24
+
+ 26814
+ 可在编译时计算常量变量“newsize”。请考虑使用 constexpr (con.5)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 295
+ 8
+
+ 26496
+ 变量“origsize”在构造后不会变化,请将其标记为 const (con.4)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 298
+ 37
+
+ 26408
+ 避免使用 malloc()和 free(),首选 nothrow 版本的 new 与 delete (r.10)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 293
+ 8
+
+ 26440
+ 函数 stringToLPCWSTR 可以声明为 noexcept (f.6)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 298
+ 21
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 314
+ 5
+
+ 6244
+ “number”的局部声明遮蔽了此前位于“25”行(“g:\c语言\爬虫\爬虫\爬虫.cpp”中)的声明。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 25
+ 4
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 317
+ 35
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 317
+ 21
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 325
+ 15
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 333
+ 28
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 333
+ 15
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 341
+ 29
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 381
+ 8
+
+ 26496
+ 变量“len”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 382
+ 5
+
+ 26496
+ 变量“nmlen”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 397
+ 8
+
+ 26496
+ 变量“lenname”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 398
+ 5
+
+ 26496
+ 变量“namelen”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 403
+ 9
+
+ 26496
+ 变量“hr”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 383
+ 19
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 383
+ 19
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 399
+ 20
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 399
+ 20
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 389
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 390
+ 8
+
+ 26485
+ 表达式 tempfp: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 391
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 392
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 393
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 396
+ 13
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/x64/Debug/vc143.idb" "b/\347\210\254\350\231\253/x64/Debug/vc143.idb"
new file mode 100644
index 0000000..5b6cbad
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/vc143.idb" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/vc143.pdb" "b/\347\210\254\350\231\253/x64/Debug/vc143.pdb"
new file mode 100644
index 0000000..0c44a1b
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/vc143.pdb" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.Build.CppClean.log" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.Build.CppClean.log"
new file mode 100644
index 0000000..4d11bd0
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.Build.CppClean.log"
@@ -0,0 +1,18 @@
+g:\c语言\爬虫\爬虫\x64\debug\vc143.pdb
+g:\c语言\爬虫\爬虫\x64\debug\vc143.idb
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.nativecodeanalysis.sarif
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.nativecodeanalysis.xml
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.obj
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.ilk
+g:\c语言\爬虫\x64\debug\爬虫.exe
+g:\c语言\爬虫\x64\debug\爬虫.pdb
+g:\c语言\爬虫\x64\debug\爬虫.lib
+g:\c语言\爬虫\x64\debug\爬虫.exp
+g:\c语言\爬虫\爬虫\x64\debug\vc.nativecodeanalysis.all.xml
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\cl.command.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\cl.read.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\cl.write.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\link.command.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\link.read.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\link.write.1.tlog
+g:\c语言\爬虫\爬虫\x64\debug\爬虫.tlog\爬虫.write.1u.tlog
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.exe.recipe" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.exe.recipe"
new file mode 100644
index 0000000..bd34a00
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.exe.recipe"
@@ -0,0 +1,11 @@
+
+
+
+
+ G:\C语言\爬虫\x64\Debug\爬虫.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.ilk" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.ilk"
new file mode 100644
index 0000000..484dd47
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.ilk" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.log" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.log"
new file mode 100644
index 0000000..9cbf813
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.log"
@@ -0,0 +1,10 @@
+ 爬虫.cpp
+G:\C语言\爬虫\爬虫\爬虫.cpp(269,30): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(386,29): warning C4244: “参数”: 从“SOCKET”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(416,52): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(441,5): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(592,74): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(594,68): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(608,81): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(610,74): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+ 爬虫.vcxproj -> G:\C语言\爬虫\x64\Debug\爬虫.exe
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.sarif" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.sarif"
new file mode 100644
index 0000000..2d867cc
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.sarif"
@@ -0,0 +1,2187 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [
+ {
+ "ruleId": "C6800",
+ "message": {
+ "text": "通过 /analyze:ruleset 或 /analyze:external:ruleset 选项指定的规则集文件无法成功分析,将被忽略。"
+ },
+ "locations": []
+ },
+ {
+ "ruleId": "C6800",
+ "message": {
+ "text": "通过 /analyze:ruleset 或 /analyze:external:ruleset 选项指定的规则集文件无法成功分析,将被忽略。"
+ },
+ "locations": []
+ },
+ {
+ "ruleId": "C26440",
+ "message": {
+ "text": "函数 file_path 可以声明为 noexcept (f.6)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 85,
+ "startColumn": 6,
+ "endLine": 85,
+ "endColumn": 6
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "file_path",
+ "decoratedName": "?file_path@@YAXXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C6031",
+ "message": {
+ "text": "返回值被忽略: “sscanf”。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 159,
+ "startColumn": 2,
+ "endLine": 159,
+ "endColumn": 33
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 152,
+ "startColumn": 39,
+ "endLine": 152,
+ "endColumn": 39
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26400",
+ "message": {
+ "text": "请勿将包含owner返回值的分配或函数调用结果分配给原始指针,请改用owner (i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 152,
+ "startColumn": 15,
+ "endLine": 152,
+ "endColumn": 39
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26401",
+ "message": {
+ "text": "请勿删除不是 owner 的原始指针(i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 162,
+ "startColumn": 2,
+ "endLine": 162,
+ "endColumn": 11
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 162,
+ "startColumn": 2,
+ "endLine": 162,
+ "endColumn": 11
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 157,
+ "startColumn": 7,
+ "endLine": 157,
+ "endColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Host: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 159,
+ "startColumn": 2,
+ "endLine": 159,
+ "endColumn": 33
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Object: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 159,
+ "startColumn": 2,
+ "endLine": 159,
+ "endColumn": 33
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Host: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 160,
+ "startColumn": 2,
+ "endLine": 160,
+ "endColumn": 26
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Object: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 161,
+ "startColumn": 2,
+ "endLine": 161,
+ "endColumn": 26
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Analyse",
+ "decoratedName": "?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C6387",
+ "message": {
+ "text": "\"p->h_addr_list[0]\" 可以是 \"0\"。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 198,
+ "startColumn": 2,
+ "endLine": 198,
+ "endColumn": 34
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ],
+ "codeFlows": [
+ {
+ "threadFlows": [
+ {
+ "locations": [
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 170,
+ "startColumn": 10
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 171,
+ "startColumn": 8
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 174,
+ "startColumn": 9
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 175,
+ "startColumn": 13
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 178,
+ "startColumn": 11
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 179,
+ "startColumn": 8
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 184,
+ "startColumn": 12
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 184,
+ "startColumn": 33
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 188,
+ "startColumn": 9
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 190,
+ "startColumn": 12
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 190,
+ "startColumn": 35
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 197,
+ "startColumn": 14
+ }
+ }
+ },
+ "importance": "unimportant"
+ },
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 198,
+ "startColumn": 8
+ }
+ }
+ },
+ "importance": "unimportant"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Host: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 178,
+ "startColumn": 15,
+ "endLine": 178,
+ "endColumn": 29
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 184,
+ "startColumn": 19,
+ "endLine": 184,
+ "endColumn": 33
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 185,
+ "startColumn": 4,
+ "endLine": 185,
+ "endColumn": 54
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 190,
+ "startColumn": 19,
+ "endLine": 190,
+ "endColumn": 35
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 192,
+ "startColumn": 38,
+ "endLine": 192,
+ "endColumn": 82
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26481",
+ "message": {
+ "text": "请勿使用指针算法。改用 span (bounds.1)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 198,
+ "startColumn": 2,
+ "endLine": 198,
+ "endColumn": 34
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26440",
+ "message": {
+ "text": "函数 Connect 可以声明为 noexcept (f.6)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 167,
+ "startColumn": 6,
+ "endLine": 167,
+ "endColumn": 6
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26493",
+ "message": {
+ "text": "请勿使用 C 样式转换(type.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 192,
+ "startColumn": 49,
+ "endLine": 192,
+ "endColumn": 82
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26493",
+ "message": {
+ "text": "请勿使用 C 样式转换(type.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 202,
+ "startColumn": 38,
+ "endLine": 202,
+ "endColumn": 50
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Connect",
+ "decoratedName": "?Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26440",
+ "message": {
+ "text": "函数 SSL_Connect 可以声明为 noexcept (f.6)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 207,
+ "startColumn": 6,
+ "endLine": 207,
+ "endColumn": 6
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "SSL_Connect",
+ "decoratedName": "?SSL_Connect@@YA_NXZ",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 temp1: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 251,
+ "startColumn": 2,
+ "endLine": 251,
+ "endColumn": 23
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Object: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 254,
+ "startColumn": 12
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 g_Host: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 255,
+ "startColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 buff: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 267,
+ "startColumn": 18,
+ "endLine": 267,
+ "endColumn": 44
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26482",
+ "message": {
+ "text": "只使用常量表达式在数组中编制索引(bounds.2)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 269,
+ "startColumn": 3,
+ "endLine": 269,
+ "endColumn": 17
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 buff: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 270,
+ "startColumn": 11,
+ "endLine": 270,
+ "endColumn": 20
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 buff: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 272,
+ "startColumn": 3,
+ "endLine": 272,
+ "endColumn": 26
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 269,
+ "startColumn": 3,
+ "endLine": 269,
+ "endColumn": 13
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26494",
+ "message": {
+ "text": "未初始化变量 buff。始终初始化对象(type.5)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 264,
+ "startColumn": 7,
+ "endLine": 264,
+ "endColumn": 7
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Gethtml",
+ "decoratedName": "?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ],
+ "properties": {
+ "targetSymbol": "buff"
+ }
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 282,
+ "startColumn": 18
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26400",
+ "message": {
+ "text": "请勿将包含owner返回值的分配或函数调用结果分配给原始指针,请改用owner (i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 282,
+ "startColumn": 18,
+ "endLine": 282,
+ "endColumn": 18
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 286,
+ "startColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26400",
+ "message": {
+ "text": "请勿将包含owner返回值的分配或函数调用结果分配给原始指针,请改用owner (i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 286,
+ "startColumn": 14,
+ "endLine": 286,
+ "endColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26401",
+ "message": {
+ "text": "请勿删除不是 owner 的原始指针(i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 289,
+ "startColumn": 12,
+ "endLine": 289,
+ "endColumn": 21
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 289,
+ "startColumn": 12,
+ "endLine": 289,
+ "endColumn": 21
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26451",
+ "message": {
+ "text": "算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 282,
+ "startColumn": 34
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26451",
+ "message": {
+ "text": "算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 283,
+ "startColumn": 18,
+ "endLine": 283,
+ "endColumn": 24
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26451",
+ "message": {
+ "text": "算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 286,
+ "startColumn": 27
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26451",
+ "message": {
+ "text": "算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 287,
+ "startColumn": 17,
+ "endLine": 287,
+ "endColumn": 23
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "UtfToGbk",
+ "decoratedName": "?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26814",
+ "message": {
+ "text": "可在编译时计算常量变量“newsize”。请考虑使用 constexpr (con.5)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 296,
+ "startColumn": 25,
+ "endLine": 296,
+ "endColumn": 25
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stringToLPCWSTR",
+ "decoratedName": "?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“origsize”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 295,
+ "startColumn": 9,
+ "endLine": 295,
+ "endColumn": 36
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stringToLPCWSTR",
+ "decoratedName": "?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26408",
+ "message": {
+ "text": "避免使用 malloc()和 free(),首选 nothrow 版本的 new 与 delete (r.10)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 298,
+ "startColumn": 32,
+ "endLine": 298,
+ "endColumn": 74
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stringToLPCWSTR",
+ "decoratedName": "?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26440",
+ "message": {
+ "text": "函数 stringToLPCWSTR 可以声明为 noexcept (f.6)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 293,
+ "startColumn": 9,
+ "endLine": 293,
+ "endColumn": 9
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stringToLPCWSTR",
+ "decoratedName": "?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26493",
+ "message": {
+ "text": "请勿使用 C 样式转换(type.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 298,
+ "startColumn": 22,
+ "endLine": 298,
+ "endColumn": 74
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stringToLPCWSTR",
+ "decoratedName": "?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C6244",
+ "message": {
+ "text": "“number”的局部声明遮蔽了此前位于“25”行(“g:\\c语言\\爬虫\\爬虫\\爬虫.cpp”中)的声明。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 314,
+ "startColumn": 6,
+ "endLine": 314,
+ "endColumn": 15
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ],
+ "codeFlows": [
+ {
+ "threadFlows": [
+ {
+ "locations": [
+ {
+ "location": {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 25,
+ "startColumn": 5
+ }
+ }
+ },
+ "importance": "important"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 317,
+ "startColumn": 31,
+ "endLine": 317,
+ "endColumn": 36
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 317,
+ "startColumn": 17,
+ "endLine": 317,
+ "endColumn": 22
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 325,
+ "startColumn": 11,
+ "endLine": 325,
+ "endColumn": 16
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 333,
+ "startColumn": 21,
+ "endLine": 333,
+ "endColumn": 29
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 333,
+ "startColumn": 8,
+ "endLine": 333,
+ "endColumn": 16
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26446",
+ "message": {
+ "text": "优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 341,
+ "startColumn": 22,
+ "endLine": 341,
+ "endColumn": 30
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "results",
+ "decoratedName": "?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“len”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 381,
+ "startColumn": 9,
+ "endLine": 381,
+ "endColumn": 25
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“nmlen”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 382,
+ "startColumn": 6,
+ "endLine": 382,
+ "endColumn": 73
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“lenname”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 397,
+ "startColumn": 9,
+ "endLine": 397,
+ "endColumn": 30
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“namelen”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 398,
+ "startColumn": 6,
+ "endLine": 398,
+ "endColumn": 80
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26496",
+ "message": {
+ "text": "变量“hr”在构造后不会变化,请将其标记为 const (con.4)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 403,
+ "startColumn": 10,
+ "endLine": 403,
+ "endColumn": 59
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 383,
+ "startColumn": 20
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26400",
+ "message": {
+ "text": "请勿将包含owner返回值的分配或函数调用结果分配给原始指针,请改用owner (i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 383,
+ "startColumn": 20,
+ "endLine": 383,
+ "endColumn": 20
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26409",
+ "message": {
+ "text": "避免显式调用 new 和 delete,请改用 std::make_unique (r.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 399,
+ "startColumn": 21
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26400",
+ "message": {
+ "text": "请勿将包含owner返回值的分配或函数调用结果分配给原始指针,请改用owner (i.11)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 399,
+ "startColumn": 21,
+ "endLine": 399,
+ "endColumn": 21
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 filename: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 389,
+ "startColumn": 2,
+ "endLine": 389,
+ "endColumn": 19
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 tempfp: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 390,
+ "startColumn": 2,
+ "endLine": 390,
+ "endColumn": 24
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 filename: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 391,
+ "startColumn": 2,
+ "endLine": 391,
+ "endColumn": 19
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 tempfp: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 391,
+ "startColumn": 2,
+ "endLine": 391,
+ "endColumn": 19
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 filename: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 392,
+ "startColumn": 2,
+ "endLine": 392,
+ "endColumn": 19
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 filename: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 393,
+ "startColumn": 2,
+ "endLine": 393,
+ "endColumn": 17
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C26485",
+ "message": {
+ "text": "表达式 filename: 没有数组要进行指针转型(bounds.3)。"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "region": {
+ "startLine": 396,
+ "startColumn": 14,
+ "endLine": 396,
+ "endColumn": 16
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "Download",
+ "decoratedName": "?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "PREfast Code Analysis",
+ "version": "14.31.31104.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "commandLine": "E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\bin\\HostX64\\x64\\c1xx.dll -ACf{1F7B090C-16DB-4822-966A-A93D26ED4681} -ACpmspft140.dll -Alint -D_PREFAST_ -D_AST_FE_ -Analyze -zm0x00007FF6BE139CC0 -il C:\\Users\\Lenovo\\AppData\\Local\\Temp\\_CL_0f7008dbast -typedil -f 爬虫.cpp -Ze -D_MSC_EXTENSIONS -Zp16 -pc \\:/ -D_MSC_VER=1931 -D_MSC_FULL_VER=193131104 -D_MSC_BUILD=0 -D_M_AMD64=100 -ZILP448 -D_M_X64=100 -D_WIN64 -D_WIN32 -GR -D_CPPRTTI -nologo -W 3 -diagnostics:column -D_GUARDOVERFLOW_CRT_ALLOCATORS=1 -Ot -DCODE_ANALYSIS -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -EHs -D_CPPUNWIND -EHc -D__MSVC_RUNTIME_CHECKS -RTCs -RTCu -MDd -D_DEBUG -D_MT -D_DLL -GS -D_M_FP_PRECISE -Zc:wchar_t -Zc:forScope -permissive- -Fox64\\Debug\\爬虫.obj -Fdx64\\Debug\\vc143.pdb -external:W 3 -Gd -analyze:projectdirectory G:\\C语言\\爬虫\\爬虫 -analyze:rulesetdirectory ;E:\\VS\\主程序\\Team Tools\\Static Analysis Tools\\\\Rule Sets; -analyze:ruleset E:\\VS\\主程序\\Team Tools\\Static Analysis Tools\\Rule Sets\\NativeRecommendedRules.ruleset -analyze:quiet -analyze:plugin E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\bin\\HostX64\\x64\\EspXEngine.dll -FC -errorreport:prompt -I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\include -I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\atlmfc\\include -I E:\\VS\\主程序\\VC\\Auxiliary\\VS\\include -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\ucrt -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\um -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\shared -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\winrt -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\cppwinrt -I G:\\C语言\\爬虫\\爬虫\\Include\\um -external:I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\include -I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\include -external:I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\atlmfc\\include -I E:\\VS\\主程序\\VC\\Tools\\MSVC\\14.31.31103\\atlmfc\\include -external:I E:\\VS\\主程序\\VC\\Auxiliary\\VS\\include -I E:\\VS\\主程序\\VC\\Auxiliary\\VS\\include -external:I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\ucrt -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\ucrt -external:I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\um -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\um -external:I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\shared -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\shared -external:I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\winrt -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\winrt -external:I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\cppwinrt -I E:\\Windows Kits\\10\\Include\\10.0.20348.0\\cppwinrt -external:I G:\\C语言\\爬虫\\爬虫\\Include\\um -I G:\\C语言\\爬虫\\爬虫\\Include\\um",
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///G:/C语言/爬虫/爬虫/爬虫.cpp"
+ },
+ "roles": [
+ "analysisTarget",
+ "resultFile"
+ ],
+ "hashes": {
+ "sha-256": "8e242abbbe5406c31734ff4365f0743d0f6354e2021c8bbe809e71e1bc427afc"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.xml" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.xml"
new file mode 100644
index 0000000..d8174ce
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.nativecodeanalysis.xml"
@@ -0,0 +1,1091 @@
+
+
+
+
+
+
+ 0
+ 0
+
+ 6800
+ 通过 /analyze:ruleset 或 /analyze:external:ruleset 选项指定的规则集文件无法成功分析,将被忽略。
+
+
+ 0
+
+
+
+
+
+
+ 0
+ 0
+
+ 6800
+ 通过 /analyze:ruleset 或 /analyze:external:ruleset 选项指定的规则集文件无法成功分析,将被忽略。
+
+
+ 0
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 85
+ 5
+
+ 26440
+ 函数 file_path 可以声明为 noexcept (f.6)。
+ file_path
+ ?file_path@@YAXXZ
+ 85
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 159
+ 7
+
+ 6031
+ 返回值被忽略: “sscanf”。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 152
+ 14
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 152
+ 14
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 162
+ 1
+
+ 26401
+ 请勿删除不是 owner<T> 的原始指针(i.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 162
+ 1
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 157
+ 10
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 159
+ 7
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 159
+ 7
+
+ 26485
+ 表达式 g_Object: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 160
+ 7
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 161
+ 7
+
+ 26485
+ 表达式 g_Object: 没有数组要进行指针转型(bounds.3)。
+ Analyse
+ ?Analyse@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 150
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+ 6387
+ "p->h_addr_list[0]" 可以是 "0"。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+ 1
+ 4
+
+ mspft
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 170
+ 9
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 171
+ 7
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 174
+ 8
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 175
+ 12
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 178
+ 10
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 179
+ 7
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 11
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 32
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 188
+ 8
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 11
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 34
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 197
+ 13
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 178
+ 27
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 184
+ 32
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 185
+ 9
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 190
+ 34
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 192
+ 46
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 198
+ 7
+
+ 26481
+ 请勿使用指针算法。改用 span (bounds.1)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 167
+ 5
+
+ 26440
+ 函数 Connect 可以声明为 noexcept (f.6)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 192
+ 48
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 202
+ 37
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ Connect
+ ?Connect@@YA_NXZ
+ 167
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 207
+ 5
+
+ 26440
+ 函数 SSL_Connect 可以声明为 noexcept (f.6)。
+ SSL_Connect
+ ?SSL_Connect@@YA_NXZ
+ 207
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 251
+ 8
+
+ 26485
+ 表达式 temp1: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 254
+ 11
+
+ 26485
+ 表达式 g_Object: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 255
+ 13
+
+ 26485
+ 表达式 g_Host: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 267
+ 25
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 269
+ 14
+
+ 26482
+ 只使用常量表达式在数组中编制索引(bounds.2)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 270
+ 10
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 272
+ 8
+
+ 26485
+ 表达式 buff: 没有数组要进行指针转型(bounds.3)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 269
+ 12
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 264
+ 6
+
+ 26494
+ 未初始化变量 buff。始终初始化对象(type.5)。
+ Gethtml
+ ?Gethtml@@YA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 248
+
+ buff
+
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 17
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 17
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 13
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 13
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 289
+ 11
+
+ 26401
+ 请勿删除不是 owner<T> 的原始指针(i.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 289
+ 11
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 282
+ 33
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 283
+ 21
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 286
+ 26
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 287
+ 20
+
+ 26451
+ 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
+ UtfToGbk
+ ?UtfToGbk@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z
+ 279
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 296
+ 24
+
+ 26814
+ 可在编译时计算常量变量“newsize”。请考虑使用 constexpr (con.5)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 295
+ 8
+
+ 26496
+ 变量“origsize”在构造后不会变化,请将其标记为 const (con.4)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 298
+ 37
+
+ 26408
+ 避免使用 malloc()和 free(),首选 nothrow 版本的 new 与 delete (r.10)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 293
+ 8
+
+ 26440
+ 函数 stringToLPCWSTR 可以声明为 noexcept (f.6)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 298
+ 21
+
+ 26493
+ 请勿使用 C 样式转换(type.4)。
+ stringToLPCWSTR
+ ?stringToLPCWSTR@@YAPEB_WV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 293
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 314
+ 5
+
+ 6244
+ “number”的局部声明遮蔽了此前位于“25”行(“g:\c语言\爬虫\爬虫\爬虫.cpp”中)的声明。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 25
+ 4
+
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 317
+ 35
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 317
+ 21
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 325
+ 15
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 333
+ 28
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 333
+ 15
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 341
+ 29
+
+ 26446
+ 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
+ results
+ ?results@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 305
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 381
+ 8
+
+ 26496
+ 变量“len”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 382
+ 5
+
+ 26496
+ 变量“nmlen”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 397
+ 8
+
+ 26496
+ 变量“lenname”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 398
+ 5
+
+ 26496
+ 变量“namelen”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 403
+ 9
+
+ 26496
+ 变量“hr”在构造后不会变化,请将其标记为 const (con.4)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 383
+ 19
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 383
+ 19
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 399
+ 20
+
+ 26409
+ 避免显式调用 new 和 delete,请改用 std::make_unique<T> (r.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 399
+ 20
+
+ 26400
+ 请勿将包含owner<T>返回值的分配或函数调用结果分配给原始指针,请改用owner<T> (i.11)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 389
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 390
+ 8
+
+ 26485
+ 表达式 tempfp: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 391
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 391
+ 7
+
+ 26485
+ 表达式 tempfp: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 392
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 393
+ 7
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
+
+ G:\C语言\爬虫\爬虫\
+ 爬虫.cpp
+ 396
+ 13
+
+ 26485
+ 表达式 filename: 没有数组要进行指针转型(bounds.3)。
+ Download
+ ?Download@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
+ 376
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj"
new file mode 100644
index 0000000..68ebf5a
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj.enc" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj.enc"
new file mode 100644
index 0000000..a6a50d6
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.obj.enc" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.command.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.command.1.tlog"
new file mode 100644
index 0000000..26e6980
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.command.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.read.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.read.1.tlog"
new file mode 100644
index 0000000..3ab758b
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.read.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.write.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.write.1.tlog"
new file mode 100644
index 0000000..c1f38e6
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/CL.write.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.command.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.command.1.tlog"
new file mode 100644
index 0000000..9633cfa
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.command.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.read.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.read.1.tlog"
new file mode 100644
index 0000000..c9f4419
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.read.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.write.1.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.write.1.tlog"
new file mode 100644
index 0000000..e6e4873
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/link.write.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate"
new file mode 100644
index 0000000..e750365
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate"
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.19041.0:
+Debug|x64|G:\C语言\爬虫\|
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog"
new file mode 100644
index 0000000..44ec6a2
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.vcxproj.FileListAbsolute.txt" "b/\347\210\254\350\231\253/x64/Debug/\347\210\254\350\231\253.vcxproj.FileListAbsolute.txt"
new file mode 100644
index 0000000..e69de29
diff --git "a/\347\210\254\350\231\253/x64/Release/err.obj" "b/\347\210\254\350\231\253/x64/Release/err.obj"
new file mode 100644
index 0000000..5c26120
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/err.obj" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/vc143.pdb" "b/\347\210\254\350\231\253/x64/Release/vc143.pdb"
new file mode 100644
index 0000000..d7dedfc
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/vc143.pdb" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.exe.recipe" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.exe.recipe"
new file mode 100644
index 0000000..9b12c7b
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.exe.recipe"
@@ -0,0 +1,11 @@
+
+
+
+
+ G:\C语言\爬虫\x64\Release\爬虫.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.iobj" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.iobj"
new file mode 100644
index 0000000..5219722
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.iobj" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.ipdb" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.ipdb"
new file mode 100644
index 0000000..75aa36a
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.ipdb" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.log" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.log"
new file mode 100644
index 0000000..9180f5c
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.log"
@@ -0,0 +1,16 @@
+ 爬虫.cpp
+G:\C语言\爬虫\爬虫\爬虫.cpp(272,30): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(389,29): warning C4244: “参数”: 从“SOCKET”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(419,52): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(444,5): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(595,74): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(597,68): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(611,81): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+G:\C语言\爬虫\爬虫\爬虫.cpp(613,74): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据
+ 正在创建库 G:\C语言\爬虫\x64\Release\爬虫.lib 和对象 G:\C语言\爬虫\x64\Release\爬虫.exp
+LINK : warning LNK4232: 名称 爬虫.exe 包含非 ASCII 字符,在具有除 936 以外的 ANSI 代码页的系统上可能不能加载 DLL
+ 正在生成代码
+ Previous IPDB was built with incompatible compiler, fall back to full compilation.
+ All 1022 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
+ 已完成代码的生成
+ 爬虫.vcxproj -> G:\C语言\爬虫\x64\Release\爬虫.exe
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.obj" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.obj"
new file mode 100644
index 0000000..51037b5
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.obj" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.command.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.command.1.tlog"
new file mode 100644
index 0000000..bf04d51
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.command.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.read.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.read.1.tlog"
new file mode 100644
index 0000000..bd2f92d
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.read.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.write.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.write.1.tlog"
new file mode 100644
index 0000000..190f510
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/CL.write.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.command.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.command.1.tlog"
new file mode 100644
index 0000000..ccb8258
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.command.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.read.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.read.1.tlog"
new file mode 100644
index 0000000..b3789a1
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.read.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.write.1.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.write.1.tlog"
new file mode 100644
index 0000000..2235a20
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/link.write.1.tlog" differ
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate"
new file mode 100644
index 0000000..c5a3823
--- /dev/null
+++ "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.lastbuildstate"
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.32.31326:TargetPlatformVersion=10.0.19041.0:
+Release|x64|G:\C语言\爬虫\|
diff --git "a/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog" "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog"
new file mode 100644
index 0000000..f874f60
Binary files /dev/null and "b/\347\210\254\350\231\253/x64/Release/\347\210\254\350\231\253.tlog/\347\210\254\350\231\253.write.1u.tlog" differ
diff --git "a/\347\210\254\350\231\253/\347\210\254\350\231\253.cpp" "b/\347\210\254\350\231\253/\347\210\254\350\231\253.cpp"
new file mode 100644
index 0000000..8e8b365
--- /dev/null
+++ "b/\347\210\254\350\231\253/\347\210\254\350\231\253.cpp"
@@ -0,0 +1,626 @@
+#pragma warning(disable:4996)
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#pragma comment(lib,"ws2_32.lib")
+#pragma comment(lib, "urlmon.lib")
+#pragma comment( lib, "libcrypto.lib" )
+#pragma comment( lib, "libssl.lib" )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include
+#ifdef __cplusplus
+}
+#endif
+
+using namespace std;
+int number = 1;
+string g_sHost; //http
+string g_sObject; //http
+char g_Host[MAX_PATH]; //https
+char g_Object[MAX_PATH]; //https
+SOCKET g_sock; //ͻ
+SSL* sslHandle;
+SSL_CTX* sslContext;
+BIO* bio;
+
+//ӭ
+void welcom();
+
+//··
+bool file_path();
+
+//ʼץȡURL
+void StartCatch_https(string startUrl); //ʹhttpsʼץȡURL
+void StartCatch_http(string startUrl); //ʹhttpʼץȡURL
+
+//URL
+bool Analyse(string url,string startUrl);
+
+//ӷ
+bool Connect_https(); //httpsЭ齨TCP
+bool Connect_http(); //httpЭ齨TCP
+
+//SSl
+bool SSL_Connect();
+
+//õhtml
+bool Get_https_html(string& html); //httpsõhtml
+string Get_http_html(string& url); //httpõhtml
+
+//UTFתGBK
+std::string UtfToGbk(const char* utf8);
+LPCWSTR stringToLPCWSTR(std::string orig);
+
+//URL
+bool results_https(string html, string startUrl); //ʹhttpsЭURL
+bool results_http(string html, string startUrl); //ʹhttpЭURL
+
+//ͼƬ
+bool Download(string imagurl);
+
+//ͷ
+bool Release(string url);
+
+int main()
+{
+ //ӭʹ
+ welcom();
+
+ cout << "һ" << number-1 << "ͼƬ" << endl;
+
+ system("pause");
+ return 0;
+}
+
+void welcom()
+{
+ printf("**********************************\n");
+ printf("* *\n");
+ printf("* ãӭʹã *\n");
+ printf("* *\n");
+ printf("* *\n");
+ printf("* *\n");
+ printf("* QQ3534358548 *\n");
+ printf("* *\n");
+ printf("**********************************\n");
+ printf("һ֧㣨URLڣ");
+
+ //鿴Ƿд洢ƬĿ¼
+ if (access("G:\\tupian", 0) != 0)
+ {
+ CreateDirectory(L"G:\\tupian", NULL);
+ }
+
+ //ʼץȡ
+ string starturl;
+ cin >> starturl;
+
+ //жhttpЭ黹httpsЭ
+ if (starturl.find("https://") == string::npos)
+ {
+ if (starturl.find("http://") == string::npos)
+ {
+ printf("URLURLǰϡhttp://ߡhttps://\n");
+ }
+ else
+ {
+ //ʹhttpЭץȡ
+ StartCatch_http(starturl);
+ }
+
+ }
+ else
+ {
+ //ʹhttpsЭץȡ
+ StartCatch_https(starturl);
+ }
+
+}
+
+//·
+bool file_path()
+{
+ if (access("G:\\tupian", 0) == 0)
+ {
+ CreateDirectory(L"G:\\tupian", NULL);
+ }
+ return true;
+}
+
+//ʹhttpsЭ鿪ʼץȡURL
+void StartCatch_https(string startUrl)
+{
+ queue q;
+ q.push(startUrl);
+
+ while (!q.empty())
+ {
+ string cururl = q.front();
+ q.pop();
+
+ //URL
+ if (false == Analyse(cururl, startUrl))
+ {
+ cout << "URLʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ӷ
+ if (false == Connect_https())
+ {
+ cout << "ӷʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ssl
+ if (false == SSL_Connect())
+ {
+ cout << "SSLʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ȡҳ
+ string html;
+ if (false == (Get_https_html(html)))
+ {
+ cout << "ȡҳʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ȡͼƬURLͼƬ
+ results_https(html, startUrl);
+
+ }
+ while (!q.empty())
+ {
+ string cururl = q.front();
+ Release(cururl);
+ }
+
+}
+
+//ʹhttpʼץȡURL
+void StartCatch_http(string startUrl)
+{
+ queue q;
+ q.push(startUrl);
+
+ while (!q.empty())
+ {
+ string cururl = q.front();
+ q.pop();
+
+ //string html = Get_http_html(html);
+
+
+ //URL
+ if (false == Analyse(cururl, startUrl))
+ {
+ cout << "URLʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ӷ
+ if (false == Connect_http())
+ {
+ cout << "ӷʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ȡҳ
+ string html= Get_http_html(html);
+ //cout << html << endl; //ҳ
+ if (html == "")
+ {
+ cout << "ȡҳʧܣ룺" << GetLastError() << endl;
+ continue;
+ }
+
+ //ȡͼƬURLͼƬ
+ results_http(html, startUrl);
+ }
+}
+
+bool Release(string url)
+{
+ char* pUrl = new char[url.length() + 1];
+ if (char* pos = strstr(pUrl, "https://"))
+ {
+ //ͷ
+ SSL_shutdown(sslHandle);
+ SSL_free(sslHandle);
+ SSL_CTX_free(sslContext);
+ }
+ //ص
+ closesocket(g_sock);
+ //ͷ
+ WSACleanup();
+
+ return true;
+}
+
+//url
+bool Analyse(string url, string startUrl)
+{
+ char* pUrl = new char[url.length() + 1];
+ strcpy(pUrl, url.c_str());
+
+ if (char* pos = strstr(pUrl, "https://"))//ҵhttps://ͷַ
+ {
+ //char* po = strstr(pUrl, "https://");
+ if (pos == NULL) return false;
+ else pos += 8;//http://ͷʡ
+
+ sscanf(pos, "%[^/]%s", g_Host, g_Object);
+ printf("%s\n", g_Host);
+ printf("Դ%s\n", g_Object);
+ delete[] pUrl;
+ }
+ else {
+ if (string::npos == url.find("http://"))
+ return false;
+ if(url.length()<=7)
+ return false;
+ int pos1 = url.find('/', 7);
+ if (pos1 == string::npos)
+ {
+ g_sHost = url.substr(7);
+ g_sObject = "/";
+
+ }
+ else
+ {
+ g_sHost = url.substr(7, pos1 - 7);
+ g_sObject = url.substr(pos1);
+ }
+ if (g_sHost.empty() || g_sObject.empty())
+ return false;
+
+ cout << "" << g_sHost << endl;
+ cout << "Դ" << g_sObject << endl;
+
+
+ }
+ return true;
+}
+
+//TCP
+bool Connect_https() //httpsЭ齨TCP
+{
+ //ʼ
+ WSADATA wsadata;
+ if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata))
+ return false;
+
+ //
+ g_sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (g_sock == INVALID_SOCKET)
+ return false;
+
+ //תΪIPַ
+ hostent* p = gethostbyname(g_Host); //https
+ //httpsЭ
+ for (int i = 0; p->h_aliases[i]; i++)
+ {
+ printf("վ %d: %s\n", i + 1, p->h_aliases[i]);
+ }
+ //ַ
+ printf("վ: %s\n", (p->h_addrtype == AF_INET) ? "AF_INET" : "AF_INET6");
+ //վIPַ
+ for (int i = 0; p->h_addr_list[i]; i++)
+ {
+ printf("վIP%d: %s\n", i + 1, inet_ntoa(*(struct in_addr*)p->h_addr_list[i]));
+ }
+
+ sockaddr_in sa;
+ memcpy(&sa.sin_addr, p->h_addr, 4);
+ sa.sin_family = AF_INET;
+ sa.sin_port = htons(443);
+ //
+ if (SOCKET_ERROR == connect(g_sock, (sockaddr*)&sa, sizeof(sockaddr)))
+ return false;
+
+ return true;
+}
+bool Connect_http() //httpЭ齨TCP
+{
+ //ʼ
+ WSADATA wsadata;
+ if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata))
+ return false;
+
+ //
+ g_sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (g_sock == INVALID_SOCKET)
+ return false;
+
+ //תΪIPַ
+ hostent* p = gethostbyname(g_sHost.c_str());
+ //httpЭ
+ if (p == NULL)
+ return false;
+ //web
+ sockaddr_in sa;
+ sa.sin_family = AF_INET;
+ sa.sin_port = htons(80);
+ memcpy(&sa.sin_addr, p->h_addr, 4);
+
+ //
+ if(connect(g_sock,(sockaddr*) &sa,sizeof(sockaddr)))
+ return false;
+
+ return true;
+}
+
+//SSl
+bool SSL_Connect()
+{
+ // Register the error strings for libcrypto & libssl
+
+ ERR_load_BIO_strings();
+ // SSlijʼSSL㷨еSSLϢ
+ SSL_library_init();
+ OpenSSL_add_all_algorithms();
+ SSL_load_error_strings();
+
+ // New context saying we are a client, and using SSL 2 or 3
+ sslContext = SSL_CTX_new(SSLv23_client_method());
+ if (sslContext == NULL)
+ {
+ ERR_print_errors_fp(stderr);
+ return false;
+ }
+ // Create an SSL struct for the connection
+ sslHandle = SSL_new(sslContext);
+ if (sslHandle == NULL)
+ {
+ ERR_print_errors_fp(stderr);
+ return false;
+ }
+ // Connect the SSL struct to our connection
+ if (!SSL_set_fd(sslHandle, g_sock))
+ {
+ ERR_print_errors_fp(stderr);
+ return false;
+ }
+ // Initiate SSL handshake
+ if (SSL_connect(sslHandle) != 1)
+ {
+ ERR_print_errors_fp(stderr);
+ return false;
+ }
+
+ return true;
+}
+
+//õ html
+bool Get_https_html(string& html)
+{
+ char temp1[100];
+ sprintf(temp1, "%d", 166);
+ string c_get;
+ c_get = c_get
+ + "GET " + g_Object + " HTTP/1.1\r\n"
+ + "Host: " + g_Host + "\r\n"
+ + "Content-Type: text/html; charset=UTF-8\r\n"
+ //+ "Content-Length:" + temp1 + "\r\n"
+ //+ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\r\n"
+ + "Connection:Close\r\n\r\n";
+ //+ temp;
+
+ SSL_write(sslHandle, c_get.c_str(), c_get.length());
+
+ char buff[101];
+ int nreal = 0;
+
+ while ((nreal = SSL_read(sslHandle, buff, 100)) > 0)
+ {
+ buff[nreal] = '\0';
+ html += UtfToGbk(buff);
+ //printf("%s\n", buff);
+ memset(buff, 0, sizeof(buff));
+ }
+
+ //printf("%s\n", html);
+ return true;
+}
+string Get_http_html(string& url)
+{
+
+ //ȡҳGet
+ string info;
+ info += "GET " + g_sObject + " HTTP/1.1\r\n";
+ info += "Host: " + g_sHost + "\r\n";
+ info += "Connection: Close\r\n\r\n";
+
+ if (SOCKET_ERROR == send(g_sock, info.c_str(), info.length(), 0))
+ return "";
+
+ //
+ char ch=0;
+ string html;
+ while (recv(g_sock,&ch,sizeof(char),0))
+ {
+ html += ch;
+ }
+
+ return html;
+}
+
+//UTFתGBK
+string UtfToGbk(const char* utf8)
+{
+ int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
+ wchar_t* wstr = new wchar_t[len + 1];
+ memset(wstr, 0, len + 1);
+ MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
+ len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
+ char* str = new char[len + 1];
+ memset(str, 0, len + 1);
+ WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
+ if (wstr) delete[] wstr;
+ return str;
+}
+LPCWSTR stringToLPCWSTR(string orig)
+{
+ size_t origsize = orig.length() + 1;
+ const size_t newsize = 100;
+ size_t convertedChars = 0;
+ wchar_t* wcstring = (wchar_t*)malloc(sizeof(wchar_t) * (orig.length() - 1));
+ mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
+
+ return wcstring;
+}
+
+//URL
+bool results_https(string html, string startUrl)
+{
+ //ƥеURL ʽ
+ smatch mat;
+ string::const_iterator start = html.begin();
+ string::const_iterator end = html.end();
+ regex gex("https://[^\\s'\"<>()]+");
+ vector vecurl;
+ int number = 1; //һ
+ if (regex_search(start, end, mat, gex) != 0)
+ {
+ while (regex_search(start, end, mat, gex))
+ {
+ string newurl(mat[0].first, mat[0].second);
+
+ //ȡͼƬ ͼƬ1ʽӡ
+ cout << "ͼƬ" << number << ":" << newurl << endl;
+ number++;
+
+ //ѻȡURL
+ vecurl.push_back(newurl);
+ start = mat[0].second;
+
+ }
+
+ //еURL
+ for (int x = 0; x < vecurl.size() - 1; x++)
+ {
+ for (int j = x + 1; j < vecurl.size(); j++)
+ {
+ if (vecurl[x] != vecurl[j])
+ {
+ //жDzͼƬ
+ string imagurl = vecurl[x];
+ if (imagurl.find(".jpg") != string::npos)
+ {
+ Download(imagurl);
+ }
+ else if (imagurl.find(".png") != string::npos)
+ {
+ Download(imagurl);
+ }
+ }
+ break;
+ }
+
+ }
+ }
+ else
+ {
+ Download(startUrl);
+ cout << startUrl << endl;
+ }
+ return true;
+}
+bool results_http(string html, string startUrl)
+{
+
+ //ƥеURL ʽ
+ smatch mat;
+ string::const_iterator start = html.begin();
+ string::const_iterator end = html.end();
+ regex gex("http://[^\\s'\"<>()]+");
+ vector vecurl;
+ int number = 1; //һ
+
+ while (regex_search(start, end, mat, gex))
+ {
+ string newurl(mat[0].first, mat[0].second);
+
+ //ȡͼƬ ͼƬ1ʽӡ
+ cout << "ͼƬ" << number << ":" << newurl << endl;
+ number++;
+
+ //ѻȡURL
+ vecurl.push_back(newurl);
+ start = mat[0].second;
+ }
+
+ //еURL
+ for (int x = 0; x < vecurl.size() - 1; x++)
+ {
+ for (int j = x + 1; j < vecurl.size(); j++)
+ {
+ if (vecurl[x] != vecurl[j])
+ {
+ //жDzͼƬ
+ string imagurl = vecurl[x];
+ if (imagurl.find(".jpg") != string::npos)
+ {
+ Download(imagurl);
+ }
+ else if (imagurl.find(".png") != string::npos)
+ {
+ Download(imagurl);
+ }
+ }
+ break;
+ }
+
+ }
+ return true;
+}
+
+//ͼƬ
+bool Download(string imagurl)
+{
+ //ͼƬ
+ //URLת
+ string url = imagurl;
+ size_t len = url.length();//ȡַ
+ int nmlen = MultiByteToWideChar(CP_ACP, 0, url.c_str(), len + 1, NULL, 0);
+ wchar_t* buffer = new wchar_t[nmlen];
+ MultiByteToWideChar(CP_ACP, 0, url.c_str(), len + 1, buffer, nmlen);
+ //URLת
+
+ //ļ· ļ123......
+ char filename[128], tempfp[128];
+ strcpy(filename, R"+*(G:\\tupian\\)+*"); //·
+ sprintf(tempfp, "%d", number);
+ strcat(filename, tempfp);
+ strcat(filename, ".jpg"); //صļĸʽ
+ printf("%s\n", filename);
+
+ //תļ֣·
+ string name = filename;
+ size_t lenname = name.length();//ȡַ
+ int namelen = MultiByteToWideChar(CP_ACP, 0, name.c_str(), lenname + 1, NULL, 0);
+ wchar_t* buffer1 = new wchar_t[namelen];
+ MultiByteToWideChar(CP_ACP, 0, name.c_str(), lenname + 1, buffer1, nmlen);
+ //תļ֣· ת
+
+ HRESULT hr = URLDownloadToFile(NULL, buffer, buffer1, 0, NULL); //غ
+ number++;
+
+ //Ƿسɹ
+ if (hr == S_OK)
+ {
+ cout << "-------ok" << endl;
+
+ }
+ return true;
+}
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj" "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj"
new file mode 100644
index 0000000..5c6eb54
--- /dev/null
+++ "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj"
@@ -0,0 +1,148 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {c2d0d86a-1d78-45cd-a1bf-a73ec06cfb5b}
+ 爬虫
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+ true
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ E:\新建文件夹\新建文件夹\OpenSSL-Win64\lib;%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.filters" "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.filters"
new file mode 100644
index 0000000..09a9e79
--- /dev/null
+++ "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.filters"
@@ -0,0 +1,22 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ 源文件
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.user" "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.user"
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ "b/\347\210\254\350\231\253/\347\210\254\350\231\253.vcxproj.user"
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git "a/\347\210\254\350\231\253/\347\210\254\350\231\253\345\216\237\347\220\206\345\233\276.png" "b/\347\210\254\350\231\253/\347\210\254\350\231\253\345\216\237\347\220\206\345\233\276.png"
new file mode 100644
index 0000000..7f7b7d8
Binary files /dev/null and "b/\347\210\254\350\231\253/\347\210\254\350\231\253\345\216\237\347\220\206\345\233\276.png" differ