在以下代码中:
int return_int_func() { return 0; }
float fv = return_int_func();
显然,编译器会警告我fv
可能会因为自动转换而丢失精度。面对很多这样的事情,我想用替代命令替换所有东西。简而言之,我想要这个:
float fv = static_cast<float>(return_int_func());
但是真正的代码有很多这样的形式:
float fv = obj.int_field;
float fv = obj->load_int_field("name");
float fv = xx.yy->zz;
我想选择我的目标(obj.int_field
或obj->load_int_field("name")
)xx.yy->zz
并将其替换为static_cast<float>(\1)
. 我试过这个:
:'<,'>s/\%V/static_cast<float>(&)/g
但是 vim 将所选单词中的所有字符static_cast...
替换为and 这根本不是我想要的。然后我尝试了这个:
:'<,'>s/\(\%V\)/static_cast<float>(\1)/g
Vim 也做同样的事情。我不知道如何用我的模式替换整个内容(尽管有任何正则表达式字符)。有什么建议么?