关于字符串的一些整理

关于字符串的相关处理,目前自己只是接触到了 在C语言的字符串处理 和 在C++ 中string字符串处理。

第一种:在C语言的字符串处理

通常需要自己清楚需要操作的字符串 指针或者地址。具体的应用中的步骤一般是: 手动开辟内存、初始化、赋值,(截取,复制...),  手动释放内存。一般和内存、指针打交道比较多。容易发生错误。

C语言的字符串处理的功能函数非常多

#include<string.h> //这个头文件几乎就包含了常用的一些C语言字符操作的功能函数

第二种:在C++使用string字符串操作

使用string 可以避开大多数的内存操作,string是一个类。里面含有很多字符串处理的成员函数,使用时:

#include<string>
using namespace std;

在一些情况下,需要传递的参数类型会有限制(如:文件路径及文件操作时),从string到C语言风格的字符串char*转换时,需要用到的是 string.c_str()这个函数。


第三种 :unicode环境下的字符串和ansi字符串

有时在网上查了一个功能函数,但在填入自己的字符参数时总是提示变量类型不对。这是把光标移动到这个函数头上时都会发现它们都会被 #define ‘’A‘’  "B".由于现在的编程环境默认都是unicode,使用的一些函数都会被替换成unicode版本下的形式,所以会经常遇见填入的字符串类型不符合

//ansi常用: char char* strlen() strcat()
//改变使用的变量类型习惯
//unicode常用:wchar_t   wchar_t* wcslen()  wcscat()

还有一种类型字符,以T开头,如 :TCHAR。这种类型的变量会根据你所处的环境来转换成相应的类型:
TCHAR变量:
ANSI环境下  被翻译成  CHAR
UNICODE下  被翻译成  wchar_t

_tcslen函数
ANSI环境下  被翻译成  strlen
UNICODE下  被翻译成  wcslen


==================常用的两个字符串转换功能函数:===========

#include<string>
#include<windows.h>
#include<vector>
inline static std::string UnicodeToUtf8(const wchar_t* buf)
{
	int len = ::WideCharToMultiByte(CP_UTF8, 0, buf, -1, NULL, 0, NULL, NULL);
	if (len == 0) return "";

	std::vector<char> utf8(len);
	::WideCharToMultiByte(CP_UTF8, 0, buf, -1, &utf8[0], len, NULL, NULL);

	return &utf8[0];
}

inline static std::wstring AnsiToUnicode(const char* buf)
{
	int len = ::MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0);
	if (len == 0) return L"";

	std::vector<wchar_t> unicode(len);
	::MultiByteToWideChar(CP_ACP, 0, buf, -1, &unicode[0], len);

	return &unicode[0];
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值