3

私は、最初に Java を学び、次に C++ に移行した新しい人の 1 人です。多くのことが奇妙です。スペースを認識するために std::string オブジェクトの文字にアクセスしようとしています (はい、最初は困難な道を進みたいのですが、今のところ正規表現はありません)、セグメンテーション違反エラーが発生しています。わかりません。エラーは、セグメンテーション違反をスローする toTokenize.at() メソッドを呼び出す「getTokens()」関数の呼び出し時にスローされます。誰かが私を正しい方向に向けることができれば、本当に感謝しています! 以下の私のコードを見つけてください。ありがとう!

#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 に答える