3

我是那些先学习 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;
}
4

1 回答 1

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
}
于 2013-09-07T19:26:11.870 回答