分段错误访问std :: string的字符

时间:2013-09-07 19:18:53

标签: c++ segmentation-fault stdstring

我是那些先学习Java然后来到C ++的新人之一,很多东西都很奇怪。我正在尝试访问std :: string对象的字符以便识别空格(是的,我想先走硬路,现在没有正则表达式),但是我得到了一个分段错误,我可以'明白。调用“getTokens()”函数时会抛出错误,该函数调用toTokenize.at()方法,这是一个抛出分段错误的方法。如果有人能以正确的方式指出我,我将非常感激!在下面找到我的代码。谢谢!

#include <iostream>
#include <vector>
#include <string>

std::vector<std::string> getTokens(const std::string& toTokenize) {

    std::vector<std::string> result;

    for (int i=1; i<toTokenize.length(); i++) {
        std::cout << toTokenize.at(i);
    }

}


int main() {

    std::string s ("");

    do {

        std::cout << "\nPlease input a command: ";
        getline(std::cin, s);

        getTokens(s);

    }
    while (s != "exit");

    return 0;
}

1 个答案:

答案 0 :(得分:4)

getTokens没有返回任何内容

修复如下: -

std::vector<std::string> getTokens(const std::string& toTokenize) {
     //^^make it as void, if nothing is to be returned
    std::vector<std::string> result;

     //start from zero
    for (size_t i=0; i<toTokenize.length(); i++) {
        std::cout << toTokenize.at(i);
    }

return result;
        //^^or return value, however, result isn't used here
}