在我的代码中用 [] 替换 .at()
我是一名 C++ 用户,并获得了一些使用 .at()
来对 STL 向量进行绑定检查的代码。现在我想将它们更改为标准 []
。有谁知道可以执行此操作的脚本吗?它不一定是一个超级通用的脚本 - 大多数情况是 .at(i)
或 .at(a*i+j)
- 但也有其中太多了,无法手工完成。
I'm a C++ user and got some code that uses .at()
to get bound checking on the STL vectors. Now I'd like to change them to standard []
. Does anyone know of a script that could do this? It doesn't have to be a super general script — most of the cases are .at(i)
or perhaps .at(a*i+j)
— but there are too many of them to do by hand.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用此 Perl 运算符:
Perl 中的
s///
运算符是“替代”(查找/替换)。在第一组 // 中,您指定要匹配的正则表达式。第二个 // 是要替换或替代匹配项的文本。在这种情况下,我找到“.at(anything-but-a-close-paren)”的任何实例,并将其替换为“[what-was-in-those-parens]”。
简而言之,
如果您使用 Visual Studio,请在查找/替换提示中执行以下操作:
查找内容:
\.at\({[^)]+}\)
替换为:
\[\1\]
启用正则表达式就可以了。
Use this Perl operator:
The
s///
operator in Perl is a "substitute" (find/replace). In the first set of //, you specify the regular expression to match. The second // is the text to replace or substitute that match with.In this case, I'm finding any instance of ".at(anything-but-a-close-paren)" and replace it with "[what-was-in-those-parens]".
As a one-liner,
If you use Visual Studio, do this in the Find/Replace prompt:
Find What:
\.at\({[^)]+}\)
Replace with:
\[\1\]
Enable Regular Expressions and you're good to go.
应该适用于大多数简单的表达式。但是,如果在 at() 的参数内使用括号,则这将不起作用。
帮助您识别这些情况并在运行所述 sed 脚本之前转换它们。
PS 如果您让 sed 像这里一样就地操作,请保留备份(例如通过 VCS)。
编辑:应该在发布之前测试该 sed 脚本。现已修复并测试。
should work for most simple expressions. However, if you use parentheses inside the parameter to at(), this will not work.
helps you to identify these cases and convert them before running said sed script.
P.S. Keep a backup around (e.g. via a VCS) if you let sed operate in-place like here.
EDIT: Should have tested that sed script before posting. Fixed now, and tested.