找回密码
 注册
查看: 925|回复: 3

紧急求助:如何从一个字符串中提取一个字符串?

[复制链接]
发表于 2003-8-4 11:19:45 | 显示全部楼层 |阅读模式
在如下字符串中:
"china \n unix \n net \n"
如何提取每行,每行都指定为一个参数?
发表于 2003-8-4 23:03:02 | 显示全部楼层
[code:1]
int nb = 0;
int ncur = 0;
string str("china \n unix \n net \n" );
vector<string> vstr;
while(string::npos != (ncur = str.find("\n",nb)))
{
        vstr.push_back(substr(nb, (ncur-nb)));
        nb = ncur + 1;
}
[/code:1]
未编译,大致是这个流程。
回复

使用道具 举报

发表于 2003-8-5 03:51:22 | 显示全部楼层
头文件:
#include <string.h>

函数原型:
char *strtok (char *s, const char *delim);

函数说明:
strtok()用来将字符串分割成一个个片段。参数 s 指向欲分割的字符串,参数 delim 则为分割字符串,当 strtok() 在参数 s 的字符串中发现到参数 delim 的分割字符时则会将该字符改为 \0 字符。在第一次调用时, strtok() 必须给予参数 s 字符串,往后的调用则将参数 s 设成 NULL。每次调用成功则返回下一个分割后的字符串指针。

返回值:
返回下一个分割后的字符串指针,如果已无从分割则返回 NULL。

范例:
[code:1]
#include <string.h>
main()
{
  char s[]="ab-cd: ef;gh: i-jkl;mnop;qrs-tu: vwx-y;z";
  char *delim="-: ";
  char *p;
  printf ("%s ", strtok (s, delim) );
  while ( (p=strtok (NULL, delim) ) ) printf ("%s ", p);
  printf ("\n");
}
[/code:1]

执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z  /* - 与 : 字符已被 \0 字符取代*/
=========摘自《Linux C 函数库参考手册》- 徐千洋 著===========
回复

使用道具 举报

发表于 2003-8-5 13:17:10 | 显示全部楼层
呵呵,都忘了这个函数了,受教受教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-8-11 12:02 , Processed in 0.042004 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表