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