欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>C++ 中字符大小写转换的函数

C++ 中字符大小写转换的函数

2023-07-31 08:34:18 收藏本文 下载本文

“幽灵书生”通过精心收集,向本站投稿了6篇C++ 中字符大小写转换的函数,下面就是小编给大家带来的C++ 中字符大小写转换的函数,希望能帮助到大家!

C++ 中字符大小写转换的函数

篇1:C++ 中字符大小写转换的函数

首先判断

如果是小写:

if(islower(str[i]))

把小写字母变成大写字母,函数就是toupper

str[i] = toupper(str[i]);

else

如果是大写字母,变成小写字母函数是:tolower

str[i] = tolower(str[i]);

检测大写字母是:isupper

检测小写字母是:islower

大写------->小写:tolower

小写-------->大写:toupper

例子

代码:

#include

#include

#include

#define MAXN 21

using namespace std;

char str[MAXN];

int main

{

cin>>str;

for(int i = 0; i < strlen(str); i++)

{

if(islower(str[i]))

str[i] = toupper(str[i]);

else if(isupper(str[i]))

str[i] = tolower(str[i]);

}

cout<

return 0;

}

篇2:Python写的英文字符大小写转换代码示例

这篇文章主要介绍了Python写的英文字符大小写转换代码示例,本文例子相对简单,本文直接给出代码实例,需要的朋友可以参考下

几行代码的小工具,用于进行如下转换

TRANSACTIONS ON CLOUD COMPUTING

=》

Transactions On Cloud Computing

代码如下:

rig = ‘TRANSACTIONS ON CLOUD COMPUTING‘

splited = orig.split(‘ ‘)

handled = ‘‘

for word in splited:

word = word[0] + word[1:].lower()

handled += (‘ ‘ + word)

handled = handled[1:]

print handled

#handled is ‘Transactions On Cloud Computing‘

篇3:办公技巧:Word中快速转换大小写

Word中快速转换大小写,在编辑输入工作中精彩要切换大小写,每次都要去俺大小写切换按键真的非常的麻烦,有没有方便快捷的方法,比如快捷键呢,

转换大小写:选中文字,按 Shift+F3。

篇4:c/c++中的字符指针数组,指向指针的指针的含义

就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针!

先看下面的代码,注意看代码中的注解!

#include

#include

usingnamespacestd;

voidprint_char(char* array[],intlen);//函数原形声明

voidmain(void)

{

//-----------------------------段1-----------------------------------------

char*a[]={“abc”,“cde”,“fgh”};//字符指针数组

char* *b=a;//定义一个指向指针的指针,并赋予指针数组首地址所指向的第一个字符串的地址也就是abc\0字符串的首地址

cout<<*b<<“|”<<*(b+1)<<“|”<<*(b+2)

//-----------------------------段2-----------------------------------------

char* test[]={“abc”,“cde”,“fgh”};//注意这里是引号,表示是字符串,以后的地址每加1就是加4位(在32位系统上)

intnum=sizeof(test)/sizeof(char*);//计算字符串个数

print_char(test,num);

cin.get;

//-------------------------------------------------------------------------

}

voidprint_char(char* array[],intlen)//当调用的时候传递进来的不是数组,而是字符指针他每加1也就是加上sizeof(char*)的长度

{

for(inti=0;i{

cout<<*array++<}

}

下面我们来仔细说明一下字符指针数组和指向指针的指针,段1中的程序是下面的样子:

char*a[]={“abc”,“cde”,“fgh”};

char* *b=a;

cout<<*b<<“|”<<*(b+1)<<“|”<<*(b+2)<

char *a[]定义了一个指针数组,注意不是char[], char[]是不能同时初始化为三个字符的,定义以后的a[]其实内部有三个内存位置,分别存储了abc\0,cde\0,fgh\0,三个字符串的起始地址,而这三个位置的内存地址却不是这三个字符串的起始地址,在这个例子中a[]是存储在栈空间内的,而三个字符串却是存储在静态内存空间内的const区域中的,接下去我们看到了char* *b=a;这里是定义了一个指向指针的指针,如果你写成char *b=a;那么是错误的,因为编译器会返回一个无法将char* *[3]转换给char *的错误,b=a的赋值,实际上是把a的首地址赋给了b,由于b是一个指向指针的指针,程序的输出cout<<*b<<“|”<<*(b+1)<<“|”<<*(b+2)<结果是>

abc

cde

fgh

可以看出每一次内存地址的+1操作事实上是一次加sizeof(char*)的操作,我们在32位的系统中sizeof(char*)的长度是4,所以每加1也就是+4,实际上是*a[]内部三个位置的+1,所以*(b+1)的结果自然就是cde了,我们这时候可能会问,为什么输出是cde而不是c一个呢?答案是这样的,在c++中,输出字符指针就是输出字符串,程序会自动在遇到\0后停止.

我们最后分析一下段2中的代码,段2中我们调用了print_array()这个函数,这个函数中形式参数是char *array[]和代码中的char *test[]一样,同为字符指针,当你把参数传递过来的时候,事实上不是把数组内容传递过来,test的首地址传递了进来,由于array是指针,所以在内存中它在栈区,具有变量一样的性质,可以为左值,所以我们输出写成了,cout<<*array++<

到这里这两个非常重要的知识点我们都说完了,说归说,要想透彻理解希望读者多动手,多观察,熟能生巧!

420){this.width=420}“ alt=”“ />

内存结构示意图!

//程序作者:管宁

//站点:www.cndev-lab.com

//所有稿件均有版权,如要,请务必著名出处和作者

篇5:C语言获取文件中字符个数或文件长度

由于以文本方式和二进制方式读取回车符,读取的长度都为为2,而我需要的是字符个数,下面两种方法经过调试,并且结果正确,

第一种方法: 也可以读取一个不定长的文件。

FILE *pFile = fopen( pFilePath, ”r“ );

if ( pFile == NULL )

{

return 0;

}

fseek( pFile, 0, SEEK_END );

iFileLen = ftell( pFile );

rewind( pFile );

m_pFileText = new char[iFileLen+1];

fread( m_pFileText, 1, iFileLen, pFile );

m_pFileText[iFileLen] = 0;

fclose( pFile );

第二种方法:

// 计算字符个数

FILE *pFile = fopen( pFilePath, ”r“ );

char ch;

int num = 0;

while ( ch = getc( pFile ) != EOF )

{

num++ ;

}

fclose( pFile );

篇6:把Lua函数传递到C/C++中实例

这篇文章主要介绍了把Lua函数传递到C/C++中实例,本文先是分析了需求,然后给出解决方法,需要的朋友可以参考下

问题

在Lua中,因为函数也是第一类值,所以会出现将函数作为另一个函数的参数,或者函数作 为函数的返回值,这种机制在很多地方都能代码更灵活更简洁,例如:

代码如下:

table.sort(table [,comp])

这里的comp就要求传入一个函数,我们在调用时,大概会有如下形式:

代码如下:

table.sort(t, comp) -- 直接写函数名

table.sort(t, local_comp) -- 某个局部函数

table.sort(t, function (a, b) xxx end ) -- 临时构造一个匿名函数

其中最后一种方式最为灵活,任意时候在需要的时候构造一个匿名函数。这种在Lua自身的 环境中使用,自然没有问题。但是,当我们在C/C++中注册一些函数到Lua环境中,而这些 函数也需要使用函数参数的时候,问题就出来了。

Lua本身是不支持将Lua函数作为函数参数传入C/C++的,不管这个想要传入的函数是全局的 、局部的、或者匿名的(匿名的本质上也算局部的)。一般情况下,我们唯一的交互方式, 不是传入一个函数,而是一个全局函数名。C/C++保存这个函数名,在需要回调Lua的时候, 就在Lua全局表中找到这个函数(根据函数名),然后再调用之。情况大致如下:

代码如下:

function lua_func () xxx end

cfunc(lua_func) -- wrong

cfunc(”lua_func“) -- right

我们这回的脚本模块,策划会大量使用需要回调函数的C/C++函数。显然,创建大量的全局 函数,先是从写代码的角度看,就是很伤神的。

解决

我们最终需要的方式,大概如下:

代码如下:

cfunc(lua_func) -- ok

cfunc(function () xxx end) -- ok

local xxx = function () xxx end

cfunc(xxx) -- ok

要解决这个问题,我的思路是直接在Lua层做一些包装。因为C/C++那边仅支持传入一个全局 函数名(当然不一定得全局的,根据实际情况,可能在其他自己构造的表里也行),也就是 一个字符串,所以我的思路就是将Lua函数和一个唯一的字符串做映射。

代码如下:

function wrap (fn)

local id = generate_id()

local fn_s = ”__callback_fn“..id

_G[fn_s] = fn

return fn_s

end

这个wrap函数,就是将一个函数在全局表里映射到一个字符串上,那么在使用时:

代码如下:

cfunc(wrap(function () xxx end))

cfunc(const char *fn_name, xxx); -- cfunc的原型

cfunc是C/C++方注册进Lua的函数,它的原型很中规中矩,即:只接收一个函数名,一个字 符串,如之前所说,C/C++要调用这个回调函数时,就根据这个字符串去查找对应的函数,

脚本方在调用时,如果想传入一个匿名函数了,就调用wrap函数包装一下即可。

一个改进

上面的方法有个很严重的问题,在多次调用wrap函数后,将导致全局表也随之膨胀。我们需 要想办法在C/C++完成回调后,来清除wrap建立的数据。这个工作当然可以放到C/C++来进行 ,例如每次发生回调后,就设置下全局表。但这明显是不对的,因为违背了接口的设计原则 ,这个额外的机制是在Lua里添加的,那么责任也最好由Lua来负。要解决这个问题,就可以 使用Lua的metamethods机制。这个机制可以在Lua内部发生特定事件时,让应用层得到通知。 这里,我们需要关注__call事件。

Lua中只要有__call metamethod的值,均可被当作函数调用。例如:

代码如下:

ab(1, 2)

这里这个函数调用形式,Lua就会去找ab是否有__call metamethod,如果有,则调用它。这 个事实暗示我们,一个table也可以被调用。一个改进的wrap函数如下:

代码如下:

local function create_callback_table (fn, name)

local t = {}

t.callback = fn

setmetatable (t, {__call = -- 关注__call

function (func, ...) -- 在t(xx)时,将调用到这个函数

func.callback (...) -- 真正的回调

del_callback (name) -- 回调完毕,清除wrap建立的数据

end })

return t

end

function wrap (fn)

local id = generate_func_id() -- 产生唯一的id

local fn_s = ”_callback_fn"..id

_G[fn_s] = create_callback_table(fn, fn_s) -- _G[fn_s]对应的是一个表

return fn_s

end

在我们的C/C++程序中,依然如往常一样,先是从_G里取出函数名对应的对象。虽然这个对 象现在已经是一个table。然后lua_call。

上面的代码是否会在原有基础上增加不可接受的性能代价?虽然我没有做过实际测试,但是 从表明看来,排除meta. table在Lua里的代价,也就多了几次Lua函数调用。

最后,感叹一下,Lua里的table及metatable机制,实在非常强大。这种强大不是功能堆砌 出来的强大,而是简单东西组合出来的强大。其背后的设计思想,着实让人佩服。

4.26.2011 Update

之前的文中说“Lua本身是不支持将Lua函数作为函数参数传入C/C++的“,这句话严格来说不 正确(由某网友评论)。假设函数cfun由c/c++注册,我们是可以编写如下代码的:

代码如下:

cfunc(print) -- 传入Lua函数

但是问题在于,我们无法取出这个函数并保存在c/c++方。Lua提供了一些接口用于取cfunc 的参数,例如luaL_checknumber(封装lua_tonumber)。但没有类似luaL_checkfunction的 接口。Lua中的table有同样的问题。究其原因,主要是Lua中的函数没有直接的c/c++数据结 构对应。

【C++ 中字符大小写转换的函数】相关文章:

1.Python判断字符串与大小写转换

2.C++ 分割字符串函数,并且返回vector

3.汉语拼音字母表大小写

4.字母大小写对照表

5.excel中get.cell函数说明

6.同义词转换

7.字符结构知识在车牌识别中的应用

8.汉语拼音大小写正确写法

9.Python中的filter函数的用法

10.C++工程师个人简历表格

下载word文档
《C++ 中字符大小写转换的函数.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部