对于有保证的单个字符,使用 `char` 还是 `string` 更好?

For a guaranteed single character, is it better to use `char` or `string`?

我有一个保证是单个字符的变量(std::string 中的子字符串)。

我强烈怀疑使用 char 更有效,即

char c = name.c_str()[offset];

而不是更复杂(和昂贵)

std::string c = name.substr(offset, 1);

我不会对生成的字符进行任何密集操作(只有一个 switch 语句)。

在这种情况下使用 char 可能更好,假设你想存储它并在以后经常处理它,否则你可以直接访问 string 个人 chars 使用 operator[]。需要注意的一件事是 std::string 实现了所谓的 short string optimization,这应该是相当快的。但是无论如何,你应该分析你的代码,除非你需要一个std::string(例如在其他一些函数中传递),你应该只使用一个char.