我从具有 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/