当我尝试将函数产生的字符串与手动声明的字符串进行比较时遇到问题:
string ip = "3.3.333.33";
string cuxa(){
HINTERNET hInternet, hFile;
DWORD rSize;
char buffer[47];
hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hFile = InternetOpenUrlA(hInternet, "https://www.myexternalip.com/raw", NULL, 0, INTERNET_FLAG_RELOAD, 0);
InternetReadFile(hFile, &buffer, sizeof(buffer), &rSize);
buffer[rSize] = '\0';
InternetCloseHandle(hFile);
InternetCloseHandle(hInternet);
return buffer;
}
所以基本上,当我做一个简单的
if(cuxa() == ip){ cout << "false"; }
=> 不会返回任何内容,因为该比较是错误的。
它们都有相同的大小,相同的字符串内容,但我无法让它工作。
我很感激任何建议,谢谢!
您的问题是,当www.myexternalip.com
报告 IP 地址时,它的末尾有一个尾随换行符。
示例输出:
10.04.56.14/n
要解决您的问题,只需用空终止字符覆盖换行符。
buffer[rSize-1] = '\0';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句