检查C中的字符串是否仅由空格组成的最有效/最安全的方法是什么?我是否需要自己编写一个函数来检查或者string.h中是否有一个我可以使用的函数?检测字符串是否由空格组成?
回答
好,写你自己的很简单:你的标准库使用
int IsSpaces(char * s) {
while (* s) {
if (! isspace(* s)) {
return 0;
}
s++;
}
return 1;
}
什么不太可能是更有效的。
没有冒犯的unapersson,但我觉得你的编码风格很难阅读。 – orlp 2011-05-10 13:38:57
@night对不起,它实际上已经开发了多年,教人们C和C++要尽可能清晰。 – 2011-05-10 13:40:03
似乎很难读懂的唯一部分是圆括号内容周围的空间。我不确定这是如何使它更容易阅读;它似乎在分裂合乎逻辑的事情。 – 2011-05-10 13:42:18
当你说空间时,你的意思是还是空格字符?
但是,没有这样的功能,这个工作虽然:
int isonlyspaces(char *str) {
while (*str++ == ' ');
return --str == '\0';
}
如果平均间隔字符,而不是字面的空间,这个版本是合适的:
int isonlyspaces(char *str) {
while (isspace(*str++));
return --str == '\0';
}
试试这个:
if (!s[strspn(s, " ")]) /* it's all spaces */
如果您还想在“空格”的定义中包含选项卡,换行符等,SIM卡将它们添加到strspn
的第二个参数。
可能值得评论,你将索引尾随\ 0字节IFF的跨度是整个长度,因此! '\ 0'将是真实的。 – Roboprog 2011-05-10 13:56:35
man string.h
将我带到以下manpage。
NAME strspn,strcspn - 搜索字符串对一组字符
概要
#include <string.h>
size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject);
说明的
的strspn()函数计算 长度的初始的s 的段完全由字符 组成PT。
的strcspn()函数计算 长度s 的初始段,其完全由 字符不是拒绝中的。
- 1. 检测字符串是否仅由一种字符组成
- 2. 检查字符串是否有空格
- 3. ModelState.Errors由空字符串组成
- 4. 如何测试字符串是否仅由不同字符组成?
- 5. 检测字符串只包含空格
- 6. 在检查字符串是否为空时表示字符串中的空格
- 7. 检查数组中的字符串是否具有空格字符javascript/jquery
- 8. 如何检查字符串是否仅由字母和数字组成
- 9. Java .split()由字符串中的空格组成
- 10. 检查字符串是否包含空格和多个@符号
- 11. Javascript:检查字符串分隔符之间是否有空格
- 12. 检查一个字符串是否只有字母+空格?
- 13. 检查字符串是否为空
- 14. 检查字符串是否为空jquery
- 15. 检查字符串是否为空
- 16. C++ - 检查字符串是否为空
- 17. 检查字符串是否不是Javascript中的空格
- 18. 检查一个字符串是否可以由Javascript中另一个字符串中的字符组成
- 19. 如何检查字符串中的行是否由空格分隔?
- 20. 如何检查是否一个特定的词由空格的字符串
- 21. 检查字符串是否是由某个字符
- 22. Applescript:检查一个字符串是否包含空字符串?
- 23. 检测字符串是否有来自可能性数组的子字符串
- 24. 检查数组是否有字符串?
- 25. 如何检查一个字符串是否由PHP中的整数组成
- 26. 检测字符串开头的空格字符
- 27. 检查一个字符串是否都是唯一的字符,空格除外
- 28. 检查字符串是否包含多个空格
- 29. 如何检查字符串是否包含空格
- 30. 检查字符串中是否只有空格
要小心'is' \ *函数:它们**要求**将它们的参数转换为'unsigned char'。见[C99标准]中的7.4/1(http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf)。 – pmg 2011-05-10 13:43:20