何时使用std :: string vs char*?

Noa*_*oth 7 c++ std

可能重复:
C++ char*vs std :: string

我是来自C#的C++的新手,但我确实更喜欢C++.

我有一个抽象类,定义了两个常量字符串(不是静态的).我想知道是否const char*会有更好的选择.我仍然掌握着C++标准,但我只是觉得在这种特殊情况下我没有任何理由需要使用std :: string(没有追加或编辑字符串,只是写入控制台通过printf).

我应该坚持std::string每一个案例吗?

Mar*_*ett 8

在每种情况下我都应该坚持使用std :: string吗?

是.

除了编写高性能多线程日志记录库的一些边缘情况之外,你真的需要知道何时会发生内存分配,或者可能是在一些低级协议中摆弄数据包头中的各个位/驱动程序.

问题是你从一个简单的char开始,然后你需要打印它,所以你使用printf(),然后可能是一个sprintf()来解析它,因为std :: stream对于只有一个int to string是一个痛苦.而你最终得到一个不安全且不可维护的混合oc c/c ++

  • 我认为有必要作出解释 (12认同)
  • 有两个大的例外:二进制数据和 C 互操作。当涉及到二进制数据时,特别是考虑到您将使用 `write` 而不是 `<<` 等,`char*` 更好。如果您使用的是 OS API,则需要 `char*`s。此外,`char*` 可以让您更轻松地控制内存分配。 (2认同)

Zac*_*ura 6

我会坚持使用std::string而不是const char*,因为大多数内置的 C++ 库都使用字符串而不是字符数组。std::string有很多内置的方法和设施,可以在操作字符串时赋予程序员很大的权力。