我有一个我正在尝试实现的基本程序,它请求一个 .pdf 文件的 URL,然后下载它并通过 Xming 显示它。首先,我想检查以确保用户实际输入的 URL 前面带有“http://”,末尾带有“pdf”或“PDF”。我想这可能是来自 Python 的人的典型问题,但我如何检查用户输入的字符串的结尾。使用下面的方法(我用我的 Python-oriented-brain )我得到一个
Range error: -3
那么实际的 C++ 程序员如何完成这项任务呢?请谢谢。
if (file[0]=='h' && file[1]=='t' && file[2]=='t' && file[3]=='p' && file[4]==':'
&& file[5]=='/' && file[6]=='/' && (file[-3]=='p' || file[-3]=='P')
&& (file[-2]=='d' || file[-2]=='D') && (file[-1]=='f' || file[-1]=='F'))
最佳答案
在 C++ 中,您无法访问负标志。 您将不得不手动计算最后一个元素的位置:
int s = file.size();
(file[s-3]=='p' || file[s-3]=='P')
&& (file[s-2]=='d' || file[s-2]=='D')
&& (file[s-1]=='f' || file[s-1]=='F')
我假设该文件是一个 C++ 字符串,如果不是,您必须使用其他方法来获取长度
您还可以通过使用内置字符串函数来简化代码:
int s = file.size();
if (s > 10 && file.find("http://") == 0 && file.substr(s-3, 3) == "PDF") //...
或者像另一个评论建议的那样使用正则表达式(可能是最好的方法)
关于c++ - C++中如何检查字符串的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597046/