用C ++中的分隔符解析字符串

时间:2011-08-27 04:34:49

标签: c++ string parsing

好的,所以我需要解析一些信息,我想知道最好的方法是什么。 好的,这是我需要解析的字符串。分隔符是“^”

John Doe^Male^20

我需要将字符串解析为名称,性别和年龄变量。在C ++中最好的方法是什么?我在考虑循环并将条件设置为while(!string.empty() 然后将所有字符分配到'^'到字符串,然后擦除我已分配的内容。有没有更好的方法呢?

4 个答案:

答案 0 :(得分:2)

您可以在C ++流中使用getline。

istream的&安培; getline(istream& is,string& str,char delimiter ='\ n')

将分隔符更改为“^”

答案 1 :(得分:1)

您有几个选择。如果你可以使用boost,你有一个很好的选择,就是它们在字符串库中提供的分割算法。你可以查看这个问题,看看行动中的助力答案:How to split a string in c

如果你不能使用boost,你可以使用string::find来获取角色的索引:

string str = "John Doe^Male^20";

int last = 0;
int cPos = -1;
while ((cPos = str.find('^', cPos + 1)) != string::npos)
{
   string sub = str.substr(last, cPos - last);

   // Do something with the string

   last = cPos + 1;
}

答案 2 :(得分:0)

#include <stdio.h>

#include <string.h>

int main ()

{

  char str[] = "This is a sample string";

  char * pch;

  printf ("Looking for the 's' character in \"%s\"...\n",str);

  pch=strchr(str,'s');

  while (pch!=NULL)

  {

    printf ("found at %d\n",pch-str+1);

    pch=strchr(pch+1,'s');

  }

  return 0;

}

在数组中执行类似的操作。

答案 3 :(得分:0)

您有很多选择,但我会自己使用strtok()。这将是短暂的工作。