1

我有一个 const char* 变量“str”,它可以像下面这样:

const char* str ="/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images/bhs";

我必须拆分这个str变量并将它们存储在一个数组中,就像char a[256]. 但我想通过检测每个斜线(/)来分割。我的意思是我想存储v1AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1。问题是在这个项目中我不允许使用字符串库和命名空间 std,所以我不能使用istringstream. 我只被允许使用string.hand stdio.h。那么我怎么能在这个限制内做到这一点呢?

4

5 回答 5

6

strcpy(),然后是 strtok()。

或者通过遍历数组来做真正的基本方法。

这是作业吗?

于 2012-04-26T12:11:54.140 回答
4
  const char* yourStr;
  char str[1000];
  strncpy(str, yourStr, sizeof(str));
  char* parts[100] = {0};
  unsigned int index = 0;
  parts[index] = strtok(str,"/");

  while(parts[index] != 0)
  {
    ++index;
    parts[index] = strtok(0, "/");
  }        
于 2012-04-26T12:25:22.063 回答
1

您可以使用strtok将字符串拆分为标记的函数。您可以使用 « / » 值设置« delim »。

于 2012-04-26T12:13:56.780 回答
1
#include <stdio.h>
#include "string.h"


int main()
{
    char str [] ="/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images/bhs";

    char* token_pointer;
    token_pointer = strtok(str, "/");

    while(NULL != token_pointer)
    {
            //handle your token
        printf("%s \n", token_pointer);
        token_pointer = strtok(NULL, "/");    
    }

    return 0;
}

运行。检查控制台。

希望能帮助到你!

干杯;)

于 2012-04-26T12:28:11.377 回答
1

有一个类似的帖子strtok - 如何避免换行并放入字符串数组?,如果你通过你会找到一个很好的答案。

那里的摘录代码

#include <stdlib.h>
#include <string.h>
...
void split(char *str, char **splitstr) 
{      
  char *p;      
  int i=0;      

  p = strtok(str,",");      
  while(p!= NULL)      
  {                
    printf("%s", p);
    splitsr[i] = malloc(strlen(p) + 1);
    if (splitstr[i])
      strcpy(splitstr[i], p);
    i++;
    p = strtok (NULL, ",");       
  } 
}
于 2012-04-26T12:31:34.370 回答