小编Chr*_*son的帖子

我怎样才能在Python中进行strtok() - 类型解析?

的标题),我该怎么办什么函数strtok(确实在C,Python中?建议它应该回答我的问题,但我正在寻找的具体strtok()行为打破了分隔符字符串中的任何一个字符.那是,给定:

const char* delim = ", ";
str1 = "123,456";
str2 = "234 567";
str3 = "345, 678";
Run Code Online (Sandbox Code Playgroud)

无论来自delim的字符数是多少,strtok()都会查找数字的子字符串.Python的拆分期望整个分隔字符串在那里,所以我做不到:

delim = ', '
"123,456".split(delim)
Run Code Online (Sandbox Code Playgroud)

因为它没有找到delim作为子字符串并返回单个元素的列表.

python strtok

4
推荐指数
1
解决办法
3600
查看次数

在C中返回一个指向常量对象的void指针

我正在编写一个访问函数,它返回一个指向内部缓冲区的指针,我想向我的函数用户暗示他们不应该更新指向的对象.一个非常人为的例子是:

void myAccessFunc(bool string, void* p, size_t* len)
{
  static const char* s = "aha!";
  static const int i = 123;

  if (string) {
     *(char**)p = &s;
     *len = strlen(s);
  }
  else {
     *(int**)p = &i;
     *len = sizeof(i);
  }
}

char* s;
size_t bytes;
myAccessFunc(true,&s, &bytes);
printf("Got '%s'\n", s);
Run Code Online (Sandbox Code Playgroud)

是的,我知道这看起来很好看.

我想要防止的是:

char* s;
size_t bytes;
myAccessFunc(true,&s,&bytes);
s[4] = '?';
Run Code Online (Sandbox Code Playgroud)

我知道我不能完全阻止它但我至少喜欢编译器警告提示用户他们不应该这样做.如果他们投了我的指针,那就是他们的问题.有没有const和void的组合和*会这样做?我尝试过类似的东西:

void myAccessFunc(bool string, const void** p, size_t* len);
Run Code Online (Sandbox Code Playgroud)

但它似乎消除了指针的无效性,因此调用者必须这样做:

const void* p;
size_t bytes;
myAccessFunc(true, &p, &bytes);
Run Code Online (Sandbox Code Playgroud)

要么

const …
Run Code Online (Sandbox Code Playgroud)

c const void-pointers

2
推荐指数
1
解决办法
6710
查看次数

"..."在CSS选择器的开头是什么意思?

我正在尝试诊断一些来自别人的CSS的错误格式.他们的CSS文件在表单中有很多条目:

..foo { font-size: 10px; color: #000000; text-decoration: none }
Run Code Online (Sandbox Code Playgroud)

Firefox web开发人员插件说:

类选择器的预期标识符,但找到'.'.由于选择器错误而忽略了规则集.

我通过http://www.w3.org/TR/CSS2/selector.html阅读,我能想到的最好的是,如果"*"可以省略,那么"..foo"就是指.包含.foo".

那么,".. foo"是什么意思?

css css-selectors

1
推荐指数
1
解决办法
918
查看次数

找出本地分支正在跟踪哪个远程

不是 找出本地分支正在跟踪哪个远程分支,如果我有多个远程分支,我可能在所有远程分支中都有"主". git branch返回master但我不知道我所在的主分支是在remoteFoo还是remoteBar中.例如,我可能会这样做:

git clone someRepo.git
cd someRepo
git remote add anotherRemote otherremoteURL
Run Code Online (Sandbox Code Playgroud)

然后git remote显示

someRepo
anotherRemote
Run Code Online (Sandbox Code Playgroud)

我能做的git checkout -b master someRepo/master还是git checkout -b master anotherRemote/mastergit branch会说"主人",在这两种情况下.我如何取回第一部分"someRepo"或"anotherRemote"?

你认为我可以使用,git remote show但它需要一个参数,你想要信息的遥控器的名称.

$ git remote show origin
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git remote show
someRepo
anotherRemote
Run Code Online (Sandbox Code Playgroud)

随着git branch我得到的是什么电流指示: …

git

1
推荐指数
2
解决办法
4140
查看次数

预处理器保留了哪些#define标识符?

我以为我曾经读过一个#define价值的领先下划线;

#define _FOO
Run Code Online (Sandbox Code Playgroud)

被ANSI C或其他标准劝阻或禁止.今天我已经梳理了互联网,审查了K&R和CRM,找不到任何支持.我发现的最接近的是一个建议(没有合适的引用),预定义标识符始终以双下划线开头结尾,以便上述内容不会发生冲突.我问,因为我正在使用一个新的静态检查器,抱怨:

#ifndef __FOO_H
#define __FOO_H
...
#endif // __FOO_H
Run Code Online (Sandbox Code Playgroud)

#define行,我是否正确或检查是我无法找到一个权威的答案.

c c-preprocessor

1
推荐指数
1
解决办法
146
查看次数

标签 统计

c ×2

c-preprocessor ×1

const ×1

css ×1

css-selectors ×1

git ×1

python ×1

strtok ×1

void-pointers ×1