【发布时间】:2021-04-22 19:32:31
【问题描述】:
我只是在和一位朋友谈论检查 std::string 是否只有空格的最有效方法。他需要在他正在从事的嵌入式项目上执行此操作,显然这种优化对他很重要。
我想出了以下代码,它使用strtok()。
bool has_only_spaces(std::string& str)
{
char* token = strtok(const_cast<char*>(str.c_str()), " ");
while (token != NULL)
{
if (*token != ' ')
{
return true;
}
}
return false;
}
我正在寻找有关此代码的反馈,也欢迎以更有效的方式执行此任务。
【问题讨论】:
-
strtok(const_cast<char*>(str.c_str()), " ");... 认真的吗? -
codereview.stackexchange.com 也可能有助于查看此代码。
-
@Mat 你有什么建议?说真的。
-
您的朋友是否做过任何分析,表明简单地循环字符串的字符(使用索引或迭代器)效率太低?
-
@Blindly:这正是我的想法。 @karlphillip:
strtok修改它是第一个参数,如果它找到令牌。这就是为什么不需要const char*以及为什么你的const_cast是完全错误的做法。
标签: c++ string optimization whitespace