本文整理汇总了C++中AnyString::trim方法的典型用法代码示例。如果您正苦于以下问题:C++ AnyString::trim方法的具体用法?C++ AnyString::trim怎么用?C++ AnyString::trim使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnyString
的用法示例。
在下文中一共展示了AnyString::trim方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: commandLine
void Program::commandLine(AnyString cmd)
{
// remove all whitespaces
cmd.trim();
auto envptr = pEnv; // keeping a reference to the current env
if (!envptr)
{
envptr = std::make_shared<ProcessSharedInfo>();
pEnv = envptr;
}
ProcessSharedInfo& env = *envptr;
MutexLocker locker(env.mutex);
env.executable.clear();
env.arguments.clear();
if (cmd.empty())
return;
String* str = &env.executable;
char instring = '\0';
const AnyString::null_iterator end = cmd.utf8end();
for (AnyString::const_utf8iterator i = cmd.utf8begin(); i != end; ++i)
{
char c = *i;
switch (c)
{
default:
{
*str += i.value();
break;
}
case '"':
[[fallthrough]];
case '\'':
{
if (instring == '\0')
{
instring = c;
}
else
{
if (instring == c)
instring = '\0';
else
*str += c;
}
break;
}
case '\\':
{
++i;
if (YUNI_UNLIKELY(i == end))
return;
c = *i;
switch (c)
{
case 'n': (*str) += '\n'; break;
case 't': (*str) += '\t'; break;
case 'r': (*str) += '\r'; break;
case 'b': (*str) += '\b'; break;
case 'f': (*str) += '\f'; break;
case 'v': (*str) += '\v'; break;
case '0': (*str) += '\0'; break;
case 'e': [[fallthrough]];
case 'a': [[fallthrough]];
case 'E': break;
default: (*str) << '\\' << c; break;
}
break;
}
case ' ':
[[fallthrough]];
case '\t':
{
if (instring == '\0')
{
if (not str->empty())
{
env.arguments.push_back(nullptr);
str = &(env.arguments.back());
}
}
else
*str += c;
break;
}
}
}
}