在可能的情况下使用std :: string或single char会更好吗?

时间:2014-01-14 11:03:38

标签: c++ c++11

在可能的情况下使用std::string或单char是否更好?

在我班上我想存储某些角色。我有CsvReader class,我想存储columnDelimiter个字符。我想知道, 将它作为char或仅使用std::string更好吗? 在使用方面,我认为std::string要好得多,但我想知道 也许会有重大的性能差异?

2 个答案:

答案 0 :(得分:5)

  • 如果您的分隔符被限制为单个字符,请使用char
  • 如果您的分隔符可能是字符串,请使用std::string

似乎相当不言自明。请参阅项目的要求以及这些要求所遵循的特征的约束。

在我个人看来,CSV字段分隔符将始终是单个字符,在这种情况下std::string不仅具有误导性,而且毫无意义。

  

就用法而言,我认为std :: string要好得多

我在很大程度上忽略了这一主张,因为你没有提供任何理由,但我只想说我拒绝了这一主张的假设前提。

  

我想知道可能会有重大的性能差异吗?

绝对!字符串由动态分配的字符块组成;这比内存中的单个字节更重。尽管您的实现可能会执行小字符串优化,但只需无意义即可添加所有这些权重,只要您希望表示的是单个字符。单个字符 char,因此在这种情况下使用char

答案 1 :(得分:1)

角色是一个角色。字符串是一个字符串;概念上,一组N个字符,其中N是任何自然数。

如果您的设计需要角色,请使用char。如果需要字符串,请使用string

在这两种情况下,你可能会遇到多语言问题(如果字符是青what会发生什么?如果字符串是青い怎么办?)但这些完全独立于你是否需要一个字符或一组N个字符的选择,即一个字符串。