如何判断一个功能是用脚本还是用C++来实现?

baibaichen 2005-11-30 11:24:13
在实际编程中,我们需要自动化一些工作,比如,查找&替换某些字符串,假设在程序中有一个接口是这样的:
void Foo(char* p);

//.....一个地方
Foo("xxxxx);

//.....其它地方
Foo("xxxxx");

现在我更改了接口:
void Foo(TCHAR* p);//为了能支持多语言
现在我需要将所有:Foo("xxxxx") 改成 Foo(_T("xxxx")); 好像没有一个编辑器提供了这样的功能。除非使用脚本(如用perl)。

这是我能想到的应该用脚本来实同的功能,但是有时问题比较微妙。

这些天,我在工作遇到了这样的情况,我们需要二次开发一个产品的功能,该产品开发商提供了C++和脚本的接口(就是PERL了)。由于曾经有一个哥们用PERL开发了另一个类似的功能,也就是说,PERL可以达到我们的需求。

我也记得某位大虾说过,脚本这种胶水语言在某些场合非常有用,我不是很熟悉PERL,所以我很难判断在那些场景下该用脚本,那些场景下用C++来实现。

各位有何高见
...全文
294 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
foxdeng 2005-12-05
  • 打赏
  • 举报
回复
不行的话,就手工改吧,估计等你弄熟perl之后,已经耗费了几倍手工更正的时间了。
baibaichen 2005-12-01
  • 打赏
  • 举报
回复
> VC的“查找/替换”功能还是很强大的,偶经常用来直接根据字段定义自动生成get/set方法的代码(或者C#里边为字段自动生成属性)。

可以讲一下具体的例子吗?
谢谢
晨星 2005-11-30
  • 打赏
  • 举报
回复
>>好像没有一个编辑器提供了这样的功能
不是的,Visual C++6.0和Visual C++.net 2003的“查找/替换”功能都直接支持规则表达式,你想要结果的很容易直接完成。
fiftymetre 2005-11-30
  • 打赏
  • 举报
回复
Perl的文本处理非常强大,因为他最早引入了强大的正则表达式

需要文本查找,替换这些东西,用perl会比较好啊
晨星 2005-11-30
  • 打赏
  • 举报
回复
VC的“查找/替换”功能还是很强大的,偶经常用来直接根据字段定义自动生成get/set方法的代码(或者C#里边为字段自动生成属性)。
晨星 2005-11-30
  • 打赏
  • 举报
回复
嗯,俺Perl用得也不多,俺也是只用perl完成一些小任务。
晨星 2005-11-30
  • 打赏
  • 举报
回复
在VC2003中,要完成:
Fun111("abc"); ===> Fun111(_T("abc"));
Fun111 ("abcde"); ===> Fun111 (_T("abcde"));
在“查找内容”输入框中填写:
{Fun111 *\(}{:q}\)
在“替换为”输入框中填写:
\1_T(\2))
VC6应该也类似吧,没试。关键是明白这里需要用到引用标记就可以了。
baibaichen 2005-11-30
  • 打赏
  • 举报
回复
事实上,我想问的是,我试用了几天PERL,我感觉,如果功能写得过于多的话,很难管理这些PERL文件。如果PERL的代码量过大,维护很难啊。因为一个公司精通PERL的人不会很多,毕竟不是以PERL为主要开发语言的公司。
C++有一些第三方工具帮你更快的理解代码,比如source insight
baibaichen 2005-11-30
  • 打赏
  • 举报
回复
“>>好像没有一个编辑器提供了这样的功能
不是的,Visual C++6.0和Visual C++.net 2003的“查找/替换”功能都直接支持规则表达式,你想要结果的很容易直接完成。”

正则表达式能完成这样的工作
Fun111("abc"); ===> Fun33333("abc");
Fun222 ("abcde"); ===> Fun33333("abcde");
注意,第二个函数调用中间有一个空格,其实有没有空格没关系,我只是想表明正则表达式可以处理这情况,在Visual C++6.0和Visual C++.net 2003的“查找/替换”对话框的查找框我可以填一个正则表达式找到形如Fun*("的字符串,在替换编辑框中可以填Func33333("

但是不能完成这样的工作
Fun111("abc"); ===> Fun111(_T("abc"));
Fun111 ("abcde"); ===> Fun111 (_T("abcde"));

也就是说,我想将 "abc" 和 "abcde" 换成 _T("abc") 和 _T("abcde"),我可以用主正则表达式找到Fun111("abc");和Fun111 ("abcde");(注意,第二个函数调用中间有一个空格,其实有没有空格没关系,我只是想表明正则表达式可以处理这情况)。现在的问题是在Visual C++6.0和Visual C++.net 2003的“查找/替换”对话框的替换编辑框中,我们应该填什么?




3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧