c++ - C++中如何检查字符串的结尾?

标签 c++ indexing

我有一个我正在尝试实现的基本程序,它请求一个 .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/

相关文章:

c# - RavenDB 自动 tmpindex 和手动索引

mysql - 为什么MySQL不使用索引?

MySQL 特定的查询性能调优

尽管使用指针将其初始化为一维,但 C++ 仍将数组用作多维

c++ - std::wstring_convert 和 std::wbuffer_convert 有什么区别?

c++ - 处理 WM_POINTER 消息时如何检测双击/点击?

postgresql - 300GB Postgis 表的缓慢索引

c++ - 如何将 pugi::char_t* 转换为字符串

c++ - 绘制边缘光滑的立方体的最佳方法?贝塞尔曲线,加载 .3ds 或其他?

mysql - 查询中未使用索引。如何提高性能?