为什么std::string 连最常用,最基本的功能也没有呢?简直是让人无语!
标准C++ 字符串处理增强函数:
//标准C++ string 去除首尾空白字符 2012-8-12 By Dewei static inline void stringTrim(string &str) { //去除左侧空白符 for (std::string::iterator iter = str.begin(); iter != str.end(); ++iter) { if (!isspace(static_cast<unsigned char>(*iter))) { str.erase(str.begin(), iter); break; } } //去除右侧空白符 for (std::string::reverse_iterator rev_iter = str.rbegin(); rev_iter != str.rend(); ++rev_iter) { if (!isspace(static_cast<unsigned char>(*rev_iter))) { str.erase(rev_iter.base(), str.end()); break; } } } //用分隔符将数组合并为字符串 2012-8-12 by Dewei //用法:typedef vector<string> stringArray; string implode(string delimter, stringArray& str_array) { string str; int num_count = str_array.size(); for (int i = 0; i < num_count; ++i) { if (!str_array[i].empty()) str.append(str_array[i]); if (i < num_count -1) str.append(delimter); } return str; } //将字符串转换成数组(支持值为空) 2012-8-12 by Dewei //用法:typedef vector<string> stringArray; void explode(const std::string &delimter, const std::string &str_source, stringArray *str_array) { str_array->clear(); if (str_source.empty()) return; std::string::size_type num_pos = 0, num_last_pos = 0; num_pos = str_source.find(delimter); //num_pos != num_last_pos防止delimter为空字符时死循环 while (std::string::npos != num_pos && num_pos != num_last_pos) { str_array->push_back(str_source.substr(num_last_pos, num_pos - num_last_pos)); num_last_pos = num_pos + delimter.length(); num_pos = str_source.find(delimter, num_last_pos); } str_array->push_back(str_source.substr(num_last_pos)); } //标准C++ std::string 仿CString 替换字符串 by Dewei 2012-6-24 //用法:using namespace std; //source_str = str_replace(oldstr, newstr, source_str); static inline string str_replace(const string oldstr, const string newstr, string source_str) { string::size_type num_pos = 0; num_pos = source_str.find(oldstr); while (num_pos != string::npos) { source_str.replace(num_pos, oldstr.length(), newstr); num_pos = source_str.find(oldstr, num_pos+oldstr.length()); } return source_str; }
截取指定区域内字符串:
//CString 截取指字区域内字符串 2012-6-6 By Dewei //CString strSrc(_T("http://download.csdn.net/download/lindao0/242800")); //CString strNew; //strNew = substr(strSrc, "//", "/"); // CString substr(CString strSrc, const CString strStart, const CString strEnd) { int iStart = 0, iEnd = 0; CString sSub = ""; iStart = strSrc.Find(strStart) + lstrlen(strStart) ; if (iStart != -1) { sSub = strSrc.Mid(iStart); iEnd = sSub.Find(strEnd); if (iEnd != -1) { sSub = sSub.Left(iEnd); } } return sSub; } //标准C++ 截取指字区域内字符串 2012-6-23 By Dewei #include <string> /* *功能:截取字符串的指定范围内的子串 *参数:strSrc源字符串,strStart开始字符,strEnd结束字符,keepStart是否保留开始字符,keepEnd是否保留结束字符 */ std::string substr(const std::string &strSrc, const std::string &strStart, const std::string &strEnd, bool keepStart = false, bool keepEnd = false) { if (strStart.empty() || strEnd.empty()) { return strSrc; } std::string::size_type iStart = 0, iEnd = 0; std::string sSub = ""; iStart = strSrc.find(strStart); if (std::string::npos != iStart) { if (keepStart) sSub = strSrc.substr(iStart); else sSub = strSrc.substr(iStart + strStart.length()); iEnd = sSub.find(strEnd); if (std::string::npos != iEnd) { if (keepEnd) return sSub.substr(0, iEnd + strEnd.length()); else return sSub.substr(0, iEnd); } } return sSub; } //标准C++ 无返回值 截取指字区域内字符串 2012-6-23 By Dewei #include <string> using std::string; //string strSrc("http://download.csdn.net/download/lindao0/242800"); //char out[1024] = {0}; //substr(strSrc, "//", "/", out); //printf("%s", out); void substr(string &strSrc, const string &strStart, const string &strEnd, char *out) { int iStart = 0, iEnd = 0; string sSub = ""; iStart = strSrc.find(strStart) + strStart.size(); if (iStart != -1) { sSub = strSrc.substr(iStart); iEnd = sSub.find(strEnd); if (iEnd != -1) { sSub = sSub.substr(0, iEnd); strcpy(out, sSub.c_str()); } } }
相关推荐
C++ 字符串操作函数集合整理 本文将对 C++ 中的字符串操作函数进行整理,总结了多种字符串操作函数的用途、函数定义、返回值、附加说明和范例。 1. bcmp() - 比较内存内容 函数定义:`int bcmp(const void *s1, ...
学习了C++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...
本篇将详细探讨如何使用C++实现字符串的倒序,以及相关的C++字符串操作知识。 首先,我们要理解C++中字符串的基本概念。在C++中,字符串通常由字符数组表示,可以使用`char`类型的数组或`std::string`类来处理。`...
通过深入学习这些基本操作,开发者可以熟练掌握C++中的字符串处理,这对于编写高效、可靠的代码至关重要。这些操作是C++编程中不可或缺的部分,尤其在处理文本数据、文件读写以及与用户交互的场景下。
根据给定的文件信息,我们可以总结出以下有关“C++字符串处理系统”的详细知识点: ### 一、项目背景与目标 #### 1.1 课题描述 本项目旨在使用C++语言开发一个字符串处理系统,该系统具备多种功能,包括但不限于:...
`std::string`提供了丰富的接口和功能,可以方便地进行字符串操作。 - **BSTR**: 这是在COM编程中常见的字符串类型,通常用于存储宽字符(Unicode)字符串。BSTR是由ActiveX Data Objects (ADO)和OLE自动化等技术...
这篇“C++字符串完全指南”深入浅出地介绍了C++中处理字符串的方法,是初学者不可多得的学习资源。下面我们将详细探讨C++中的字符串概念、字符串操作以及如何读取字符串。 1. **C++字符串基础** 在C++中,字符串是...
在C++编程中,字符串处理是一项至关重要的任务,它涉及到数据的输入、输出以及操作。C++标准库提供了丰富的...通过学习和使用这个库,开发者可以提升其在C++字符串处理方面的技能,从而编写出更高效、更简洁的代码。
通过分析和使用`split.cpp`和`split.h`,我们可以学习如何在C++中高效地处理字符串,这对于编写涉及大量字符串操作的程序非常有帮助。这个实用工具可能包含了多种字符串处理策略,能够适应各种复杂的分割需求,使得...
- 可以考虑使用`std::string`类替代字符数组,这样可以避免硬编码字符串最大长度,并提供更丰富的字符串操作方法。 - 使用`strcmp`函数可以简化字符串比较的过程。 #### 总结 通过本文的学习,我们了解到如何...
总之,C++字符串匹配结合KMP算法可以提供高效且灵活的文本处理能力,而模糊匹配的实现则进一步增强了其实用性。理解并熟练掌握这一技术,对提升C++编程技能大有裨益。通过实践和调试StringMatch这个项目,开发者可以...
分析这个源代码,我们可以学习到如何在C++中有效地管理内存,如何处理字符串的边界条件,以及如何优化字符串操作的性能。此外,如果源码中包含测试用例,那么还可以看到这些操作在实际场景中的应用。 总的来说,这...
通过本案例的学习,我们可以深入了解如何在C++中实现字符串操作的各种功能。这不仅有助于提升我们在实际项目中的开发效率,还能让我们更好地理解C++语言的强大之处。希望通过对FString类的学习,大家能够掌握更多...
在C++编程语言中,字符串处理是至关重要的一个部分,涉及到很多函数和...以上是C++字符串处理的基础知识,实际编程中还会遇到更多复杂情况,如宽字符、多字节字符集、正则表达式等,这些都需要根据具体需求学习和掌握。
了解并熟练使用这些C++字符串函数,能让你在编写涉及字符串处理的代码时更加高效和安全。通过深入学习和实践,你将能够更好地应对各种字符串相关的编程挑战。在实际开发中,结合C++标准库提供的其他容器和算法,如`...
二、字符串操作 1. 连接(concatenation):使用`+`运算符或`append()`函数可以将两个字符串合并。例如,`std::string s1 = "Hello, "; s1 += "World!";` 或 `s1.append("World!");`。 2. 访问字符:可以通过索引...
字符串操作函数大全(String) 在 C 语言中,字符串操作函数是非常重要的一部分,它们被广泛应用于各种编程领域。今天,我们将对字符串操作...通过学习这些函数,我们可以更好地掌握字符串操作的技巧,提高编程效率。
总之,C++中的字符串查找是编程基础的重要组成部分,学习并精通这些技巧将对你的编程生涯大有裨益。无论是进行简单的文本处理,还是复杂的算法设计,理解和应用字符串查找都能提升你的编程效率和代码质量。
在C++编程中,字符串处理是一项重要的任务,而C++字符串类`std::string`是进行文本操作的主要工具。这个类提供了丰富的成员函数,使得在C++中处理字符串变得非常方便。本文将深入探讨`std::string`类,以及如何在...
压缩包中的"String"文件可能包含了实现这些操作的具体代码,进一步学习这个程序可以加深对C++字符串操作的理解。在实际编程中,掌握这些基本操作有助于编写高效、可靠的代码,解决各种字符串处理问题。在数据结构和...