我試圖做一個函數來拆分一個字符串,「拆分空間」,到一個向量將包含「拆分」「在」「空間」。到目前爲止,這是我得到的代碼。拆分函數拋出錯誤
#include <iostream>
#include <utility>
#include <algorithm>
using namespace std;
std::vector<std::string> split(std::string * s, char * tosplit)
{
size_t i = 0;
int count = 0;
size_t contain;
std::vector<std::string> split;
std::cout << "Start" << std::endl;
std::cout << *s << std::endl;
std::cout << *tosplit << std::endl;
while((contain = s->find(*tosplit,i)) != std::string::npos)
{
count++;
i = contain + 1;
}
std::cout << "Contains " << count << std::endl;
if (count == 0)
{
std::cout << "Equals 0" << std::endl;
split = std::vector<std::string>(1);
split.at(0) = s->c_str();
return split;
}
split = std::vector<std::string>(count + 1);
split.begin();
int lasti;
i = s->find_first_of(*tosplit);
split.at(0) = s->substr(0, i);
lasti = i;
int runs = 1;
while (runs <= count)
{
i = s->find(*tosplit, lasti + 1);
std::cout << i << " " << lasti << std::endl;
split.at(runs) = s->substr(lasti, --i);
runs++;
lasti = i;
}
split.at(runs) = s->substr(lasti, s->size());
std::cout << "done, result is" << std::endl;
i = 0;
while (i < split.capacity())
{
std::cout << split.at(i) << std::endl;
i++;
}
return split;
}
它拋出一個out_of_range異常。任何幫助,你可以給予讚賞。這就像我在函數中使用指針的第一部分,所以我在這裏猜測。
謝謝!
請不要建議使用x或y方法,我想寫我自己的,因爲我正在爲了體驗而做。
你爲什麼用'std :: string'指針? – Rapptz
您不需要將char作爲指針傳遞。 –
當你使用調試器時,哪一行會拋出異常? –