[问题] 字串1分为2

楼主: blueguan   2017-09-05 19:52:48
开发平台(Platform): (Ex: Win10, Linux, ...)
LINUX
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
问题(Question):
用第一个空格为分隔点,将一段含有空格的字串1分为2
喂入的资料(Input):
This is a book.
预期的正确结果(Expected Output):
This
is a book
目标是能简化,不想要1个1个char来做copy
想请问大家是否有很棒的作法...
感谢大家
作者: johnjohnlin (嗯?)   2017-09-05 20:03:00
while (*s != ' ') s++; *s = '\n';
作者: Caesar08 (Caesar)   2017-09-05 20:06:00
先贴code出来。这功能有好几种方法可以做
作者: moebear (萌熊)   2017-09-05 20:13:00
一楼的满不错的
楼主: blueguan   2017-09-05 20:29:00
可是作法1只会读出This...哪 is a book 还是另外抓.我不是要切成 This, is, a, book 四个Word是要分成而是两个字串
作者: stucode   2017-09-05 20:44:00
? 作法1是指一楼吗? 我觉得你好像误会了什么
作者: Hazukashiine (私は幸せです)   2017-09-05 20:44:00
while 遇到第一个空格会退出回圈
作者: stucode   2017-09-05 20:45:00
另外你说不想一个一个char处理是想找现成函数吗?
作者: eye5002003 (下一夜)   2017-09-05 22:00:00
想不出比一楼更好的做法了一楼找出空白字符的位置之后就可以用std::string切割
作者: Hazukashiine (私は幸せです)   2017-09-05 23:45:00
这个问题很明显是一个线性复杂度的问题要怎么不一个一个比对完成这个任务(?
作者: CoNsTaR ((const *))   2017-09-05 23:59:00
用 magic numbers?XDD
作者: hunandy14 (Charlott.HonG)   2017-09-06 00:10:00
strtok_s(str, " ,", &p);然后在印出 str 和 p
作者: steve1012 (steve)   2017-09-06 00:37:00
把他包成一个函数 就可以假装很简洁啦
作者: bravc29229 (neil)   2017-09-06 01:39:00
抱歉C不熟Java的话是这样做String[] newString = stri上面断掉.. string.split(" ", 2); 即可
作者: PkmX (阿猫)   2017-09-06 02:20:00
可以#include<水晶球>啊 char* s2 = s + oracle();
作者: adrianshum (Alien)   2017-09-06 13:32:00
Char array 的话就把第一个space 换成NULL, 第二个string 就是由NULL 后一个位开始
作者: firejox (Tangent)   2017-09-06 13:44:00
sscanf
作者: moebear (萌熊)   2017-09-06 17:17:00
楼上这好像也很好
作者: s4300026 (s4300026)   2017-09-06 18:04:00
我记得c-style的字串是可以以/0为结尾,用一楼的做法,把空白取代成/0,然后新创一个指标只到/0后面的字串呢?啊,我说就是楼楼上的方法
作者: uranusjr (←這人是超級笨蛋)   2017-09-06 21:00:00
while (*s != '') s++; *s = '\0'; char *s2 = s + 1;其实就是上面讲的方法啦, 先决条件是 s 是 char *
作者: HolyBugTw (HolyBug)   2017-09-08 12:02:00
1)*str1指向&str 2)*str2指向&str[5] 3)把str[4]变\0

Links booklink

Contact Us: admin [ a t ] ucptt.com