`
dewei
  • 浏览: 164684 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

C/C++ 字符串为空判断 效率比较

 
阅读更多

为了测试判断字符串为空的效率,今天特意做了一个测试。得出以下结论:

 

Cstring s = "我是一个中国人!";
s.GetLength() == 0 效率略快于 s.IsEmpty(),但是  s[0] == '\0' 效率比 GetLength() 低一倍。

 

换成 string 又测了一次:

//string s.length() 2730 毫秒
//string s.empty() 2839 毫秒
//string s[0] 5616 毫秒
结论:标准C++的 string 真让人失望,效率如此低下!!虽然 CString 受限于MFC,但还是值得首选!

 

最后又测了一次 char s[24] ="我是一个中国人!";

用 s[0] == '\0' 仅需时234毫秒,哈哈,还是C语言快啊!

 

 

// s.GetLength() == 0 效率略快于 s.IsEmpty() 
// s[0] == '\0' 效率比 GetLength() 低一倍。
// 10亿次循环,s[0]需时1529毫秒, s.IsEmpty() 需时 874毫秒, s.GetLength() 用时 655 毫秒
	DWORD start = GetTickCount();
	CString s = "我是一个中国人!";
	for (int i = 0; i <= 100000000; ++i)
	{
		if (s.GetLength() == 0) {
		//if (s.IsEmpty()) {
		//if (s[0] == '\0') {
			CString b = s;
			continue;
		}
	}
	double end = GetTickCount() - start;
	CString msg;
	msg.Format("用时:%f", end);
	AfxMessageBox(msg);
 

 

分享到:
评论

相关推荐

    C语言检测字符串是否为json字符串

    在进行数据交互时,我们常常需要检查一个字符串是否符合JSON的格式规范,这就是`C语言检测字符串是否为json字符串`这个主题所关注的问题。 C语言本身并不直接支持JSON解析,因此我们需要借助第三方库或者自定义函数...

    c++字符串操作

    在这个“c++字符串操作”项目中,开发者可能利用了这些工具来实现对字符串的各种操作,如字符计数、搜索、比较和修改等。下面我们将详细探讨相关的知识点。 1. **std::string 类**:这是C++标准库中的一个类,用于...

    cpp代码-C/C++ 字符串匹配算法时间复杂度比较

    在C/C++编程中,字符串匹配是一个常见的任务,特别是在文本处理、搜索引擎和数据解析等领域。本文将探讨几种常用的字符串匹配算法,并通过`main.cpp`代码示例比较它们的时间复杂度。`README.txt`文件可能包含了关于...

    程判断输入的一串字符是否为“回文”。所谓“回文”是指顺序读和逆序读都一样的字符串。如:“12321”和“abcdcba”都是回文。

    总之,判断字符串是否为回文是一个经典的编程问题,它可以帮助初学者理解字符串处理、循环、条件判断、递归以及算法效率等核心概念。在C++中,有多种实现方式,选择哪种方法取决于对性能和简洁性的需求。

    C 语言 指针实现 字符串是否为回文

    根据给定的文件信息,我们可以总结出以下关于“C 语言 指针实现 字符串是否为回文”的详细知识点: ### C语言中的指针与字符串操作 #### 回文概念简介 在数学和计算机科学领域,一个字符串被称为回文(Palindrome...

    C/C++面试之算法系列--几个典型的内存拷贝及字符串函数实现

    通过对上述几个典型内存拷贝及字符串函数的实现分析,我们可以看到,在实际编程中不仅要关注算法本身的效率,还需要注意各种特殊情况的处理,例如内存重叠、空指针判断以及字符串结束符等问题。这些细节往往决定了...

    c/c++中文手册(包含c++17标准).zip

    《C/C++中文手册》是为C++和C语言学习者提供的重要参考资料,特别是其中包含了C++17标准,这是C++发展的一个重要里程碑。C++17在之前的C++11和C++14标准基础上,引入了更多优化和新特性,使得编程更加高效、简洁。 ...

    C/C++字符串与数字互转的实现

    在C和C++编程语言中,字符串与数字之间的转换是常见的操作。本文将详细讨论如何在C和C++中实现这种转换。 首先,我们来看C语言中的转换方法: 1. **数字转字符串**: - `int sprintf(char *str, const char *...

    一个简单的字符串统计代码,用户输入字符串,以问号结束,统计其中的字母个数,数字个数及其他符号数 C和C++两种语言实现

    在C语言中,字符串是由字符数组表示的,通常以空字符'\0'结尾。C++中,虽然也可以使用字符数组,但更常见的是使用`std::string`类来处理字符串,它提供了丰富的成员函数进行操作,如`length()`用于获取字符串长度。...

    判断一个字符串或字符串中的一个字符是否为数字类型

    在编程领域,判断一个字符串或字符串中的一个字符是否为数字类型是常见的操作,尤其是在处理用户输入、数据分析或者格式验证时。下面将详细讲解几种不同语言中实现这一功能的方法,以及如何确保判断的安全性和效率。...

    高质量C/C++编程指南

    - **类STRING示例**:通过字符串类STRING的具体实现来解释构造函数和析构函数。 - **拷贝构造函数与赋值函数的重要性**:强调这两者在对象复制中的作用。 - **拷贝构造函数与赋值函数示例**:以STRING类为例,说明...

    自己用C++实现的字符串和队列代码

    在C++中,有多种方式处理字符串,包括C风格的字符数组(char*)、C++标准库中的`std::string`类以及自定义字符串类。标题中提到的"myString.rar"可能包含了作者自定义的字符串类实现。自定义字符串类通常需要考虑...

    C语言字符串操作大全

    `strcmp`函数用于比较两个字符串,根据ASCII码值判断它们的相对大小。如果`str1`大于`str2`,返回值大于0;如果两者相等,返回0;如果`str1`小于`str2`,返回值小于0。用法如下: ```c int strcmp(char *str1, ...

    C/C++代码着色器

    例如,关键字通常会被标记为蓝色,字符串常量为绿色,注释为灰色,变量名可能为黑色或自定义颜色。这样,即使面对大量的代码,也可以快速定位和理解代码逻辑。 【源程序管理】是软件开发中的一个重要环节,包括版本...

    C/C++程序设计员应聘常见面试试题深入剖析

    这些找错题考察的是对C/C++基础知识的理解,如字符串处理、内存管理以及函数使用。例如,`strcpy`函数的实现,不同得分的版本展示了从基本功能实现到考虑边界条件、错误处理和效率优化的完整过程。一个10分的`strcpy...

    基于字符串模式匹配算法的病毒感染检测问题_算法_数据结构_

    1. **朴素算法**:最直观的方法是逐个字符比较,但效率低下,时间复杂度为O(n*m),n为目标字符串长度,m为模式字符串长度。 2. **KMP算法**(Knuth-Morris-Pratt算法):通过构造失败函数,避免了对已经匹配的字符...

    c/c++语言常用函数手册

    `strcpy()`用于复制字符串,`strcat()`连接两个字符串,`strcmp()`比较两个字符串,`strstr()`查找子字符串,`strchr()`查找字符在字符串中的位置,`strlen()`计算字符串长度。注意,这些函数不处理字符串结束符`\0...

Global site tag (gtag.js) - Google Analytics