我正在为我的一个CS类学习C++,而对于我们的第一个项目,我需要使用c-strings解析一些URL(即我不能使用C++ String类).
我能想到接近这个的唯一方法就是迭代(因为它是一个char [])并使用一些switch语句.来自在C++方面经验丰富的人 - 有更好的方法吗?你能指点我一个好的在线资源吗?我还没找到一个.
奇怪的是你不允许使用C++语言特性,即C++字符串!
标准C库中有一些C字符串函数可用.
例如
strdup - duplicate a string
strtok - breaking a string into tokens. Beware - this modifies the original string.
strcpy - copying string
strstr - find string in string
strncpy - copy up to n bytes of string
etc
Run Code Online (Sandbox Code Playgroud)
这里有一个很好的在线参考,其中包含用于搜索和查找内容的可用c字符串函数的完整列表.
http://www.cplusplus.com/reference/clibrary/cstring/
如果需要,您可以像访问数组一样访问字符串.
例如
char* url="http://stackoverflow.com/questions/1370870/c-strings-in-c"
int len = strlen(url);
for (int i = 0; i < len; ++i){
std::cout << url[i];
}
std::cout << endl;
Run Code Online (Sandbox Code Playgroud)
至于实际如何进行解析,你必须自己解决这个问题.毕竟这是一项任务.
有许多C标准库函数可以帮助您.
首先,看一下C标准库函数strtok.这允许您检索由某些分隔符分隔的C字符串的部分.例如,您可以使用分隔符/标记来获取协议,域,然后获取文件路径.您可以使用分隔符对域进行标记.获取子域,二级域和顶级域.等等.
它不像正则表达式解析器那么强大,这是你真正想要的解析URL,但它适用于C字符串,是C标准库的一部分,可能在你的作业中使用.
其他可能有用的C标准库函数:
编辑:提醒一下,在C++中使用这些函数的正确方法是<cstring>在std :: namespace中包含和使用它们,例如std :: strtok().
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |