【发布时间】:2016-06-11 02:34:32
【问题描述】:
我正在 C++ 中使用 string::find 搜索子字符串。当我使用const auto 定义一个字符串并稍后使用该变量时,eclipse 将. 替换为->。
我发现这个 SO thread 得出的结论是 auto foo = "bar" 被推导出为 (const char *) foo = "bar"。所以 eclipse 正确地将 . 转换为 -> 尽管我一开始有点困惑。我错误地认为auto 会变成std::string。
将auto foo = "bar" 推导出为std::string 而不是const char * 会有缺点吗?代码量增加,性能变慢?
【问题讨论】:
-
"bar"的类型是const char[4]。我不知道你为什么认为这应该自动转换为std::string。 -
我认为您混淆了您可以将
const char *或const char [4]分配给字符串的事实:std::string str = "bar";引号之间的任何内容都只是一个普通的 const char 数组。 -
如果您希望类型为
std::string,请这样说。不要在这里使用auto。
标签: c++ string performance c++11 auto