在可能的情况下使用std::string
或单char
是否更好?
在我班上我想存储某些角色。我有CsvReader
class,我想存储columnDelimiter
个字符。我想知道,
将它作为char
或仅使用std::string
更好吗?
在使用方面,我认为std::string
要好得多,但我想知道
也许会有重大的性能差异?
答案 0 :(得分:5)
char
。std::string
。似乎相当不言自明。请参阅项目的要求以及这些要求所遵循的特征的约束。
在我个人看来,CSV字段分隔符将始终是单个字符,在这种情况下std::string
不仅具有误导性,而且毫无意义。
就用法而言,我认为std :: string要好得多
我在很大程度上忽略了这一主张,因为你没有提供任何理由,但我只想说我拒绝了这一主张的假设前提。
我想知道可能会有重大的性能差异吗?
绝对!字符串由动态分配的字符块组成;这比内存中的单个字节更重。尽管您的实现可能会执行小字符串优化,但只需无意义即可添加所有这些权重,只要您希望表示的是单个字符。单个字符 是char
,因此在这种情况下使用char
。
答案 1 :(得分:1)
角色是一个角色。字符串是一个字符串;概念上,一组N个字符,其中N是任何自然数。
如果您的设计需要角色,请使用char
。如果需要字符串,请使用string
。
在这两种情况下,你可能会遇到多语言问题(如果字符是青what会发生什么?如果字符串是青い怎么办?)但这些完全独立于你是否需要一个字符或一组N个字符的选择,即一个字符串。