c++不用 boost 库,怎么切割字符串?

2018-08-08 19:21:24 +08:00
 wsds

不用 boost 库,最简单的方式, 怎么拿到 test123

test/test123
3464 次点击
所在节点    程序员
26 条回复
winterfell30
2018-08-08 19:25:36 +08:00
str.substr(str.rfind('/'))?
MeteorCat
2018-08-08 19:25:42 +08:00
........tinyhttp 在 http 解析的时候有针对字符串截断,参考下用\0 截断
agostop
2018-08-08 19:27:13 +08:00
我想问下,现在做 C++开发的,是不是基本离不开 boost ?
changnet
2018-08-08 19:27:48 +08:00
看具体需求,我很多时候都是 for 循环去找
wsds
2018-08-08 19:27:51 +08:00
@winterfell30 有这么简单的方法 ?网上没查到过这个答案
singer
2018-08-08 19:28:45 +08:00
STL 不行么?
glacer
2018-08-08 19:34:14 +08:00
自己实现 split 函数不就行了么,循环过一遍而已
SPACELAN
2018-08-08 19:36:30 +08:00
emmm,写 c++的,从来不用 boost
gnaggnoyil
2018-08-08 21:00:50 +08:00
range-v3 就有现成的`ranges::view::split`.不过你确定你这不是个 X-Y 问题?我觉得你可能更需要`ranges::view::tokenize`
innoink
2018-08-08 21:04:58 +08:00
你难道不去 cppreference.com 上看看 std::string 有哪些成员函数么?
byteli
2018-08-08 21:20:30 +08:00
string 这么蛋疼的东西还是用成熟的好,比如 qstring
shilyx
2018-08-08 21:27:59 +08:00
@agostop 一般项目中能不引入 boost,则不引入
一旦引入之后,就再无所顾忌
tangxiaoqiang123
2018-08-08 21:33:53 +08:00
std::string split(char* str, const char* sep) {
std::stringstream o;
char* s = strtok(str, sep);
while (s != NULL) {
o << s;
s = strtok(NULL, sep);
}
return o.str();
}
winterfell30
2018-08-08 21:34:34 +08:00
@wsds 如果是像你举的那个例子这么简单这样就可以了,要完全实现 split 的功能还是自己写一个函数吧
hanminghui
2018-08-08 21:37:50 +08:00
常备 cppreference,学到了
lolcat
2018-08-08 21:43:49 +08:00
#include <string.h>
....
char *p=(strchr("test/test123",'/')+1);
这应该是最简单的方法了吧?
dosmlp
2018-08-08 21:49:43 +08:00
自己写一个分割函数就完了,多大点事还发个帖子
yanaraika
2018-08-08 22:55:58 +08:00
range-v3 吧,header-only,比起 boost 小太多,无痛引入
agagega
2018-08-08 23:02:36 +08:00
<algorithm> 里面的 find
agostop
2018-08-09 09:04:42 +08:00
boost 是个可以让 C++变 java 的神奇之库吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/478040

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX