c++ - 如何让 C++ 字符串函数的行为类似于 Java 和 C# 字符串方法?

标签 c++ string

我从具有 Java 和 C# 知识的一般编程背景开始学习一些 C++。我正在处理一些字符串,但我对某些字符串函数感到沮丧。我习惯于字符串函数返回一个新的字符串,而旧的字符串完好无损。我知道这是在 C# 和 Java 中完成的,因为字符串是不可变的,但我真的希望 C++ 中的字符串方法也能以这种方式工作。有什么我想念的吗?现在我正在做这样的事情:

std::string temp = word;
Func(temp.erase(i , 1));

编辑:这就是我的想法:

Func(word.substr().erase(i , 1);

你们觉得哪一个最好?我想这是一件小事,只是想知道。

最佳答案

无论何时你想要一个拷贝,明确地声明它:

std::string copy = original;
copy.erase(startPos, size);

在实际上不需要拷贝时不断地复制字符串是对性能的浪费,而 C++ 被设计为具有极高的性能,因此大型程序(如游戏、办公套件或 Web 浏览器)即使在旧的系统上也能流畅运行硬件。

C++ 的座右铭是“不要为你不需要的东西买单”,为了满足这一非常重要的需求,整个语言都是围绕这一点设计的。

这并不意味着其他语言(如 Java)更糟或更好,只是它们服务于不同的目的和不同的需求,因此功能不同。 Java 的主要目的是“随时随地运行相同的可执行文件”(字面意思是:“ write once, run everywhere ”),这就是它存在于虚拟机上的原因,也是 Java 存在的原因代码适用于 10 美元的手机、1000 美元的智能手机、电视、计算机、网络浏览器和您的微波炉。

关于c++ - 如何让 C++ 字符串函数的行为类似于 Java 和 C# 字符串方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691052/

相关文章:

c++ - 你能检测出不可编译的代码吗?

c++ - 为什么协程的返回类型必须是可移动构造的?

java - 如果在字符串常量池区域中创建(或已经存在)相同的字符串文字,那么在堆中创建重复的 String 对象有什么好处?

java - 字符串分词器 : split string by comma and ignore comma in double quotes

arrays - 如何在 MATLAB 中从字符串创建数值数组?

java - 协助公钥加密

Haskell 中的正则表达式和字符串库

c++ - OpenMP 中的本地指针

c++ - 从多边形网格创建地形二维曲线

c++ - `type_info::before` 有什么用?