【发布时间】:2013-03-31 22:34:56
【问题描述】:
我对 C++ 很陌生,我认为我在这段代码的某个地方犯了一个小错误。到目前为止我没有发现它。我希望你能帮助我,告诉我怎么/在哪里/为什么错了? 非常感谢。
代码:
std::vector<std::string> spliter(const std::string& s, char delimiter)
{
std::vector<std::string> result;
size_t start = 0;
for(std::size_t i = 0; i != std::string::npos; i = s.find(delimiter,start))
{
result.push_back( s.substr(start,i-start) );
start = i+1;
}
iprintf("\x1b[2J");
printf("\x1b[4;0HDone Splitting Text.");
swiWaitForVBlank();
return result;
}
给定的参数:
s = "$ 00-000 SS ''Prologue'' CF N00-001 V 1 MP 20"
分隔符 = ' '(一个空格)
预期结果:
result[0] = $
result[1] = 00-000
result[2] = SS
etc.
当前错误结果:
result[0] =
result[1] =
result[2] = 00-000
etc.
非常感谢任何帮助!
【问题讨论】:
-
你能看到在你的循环中第一次,你在推回
s.substr(0,0)吗? -
等等,在第一个循环发生之前没有设置'i'?尽管如此,它并没有解释丢失的 '$' 字符。
-
你看到this问题的答案了吗?您的代码看起来有点相似。
-
@Smileynator
i设置为0和start设置为0。也许您最初打算将i设置为s.find(delimiter,start)。 -
这让我很困惑,我应该坚持使用普通的 for 循环而不是尝试这种花哨的东西
标签: c++ vector split delimiter