【发布时间】:2015-01-19 03:29:25
【问题描述】:
我正在尝试实现一个基本终端(如 bash),我目前正在尝试接收用户输入(就像他们在 bash 中输入命令一样)并用空格分隔每个终端并将其放入向量中所以我可以从向量中读取并一一处理每个命令。 我似乎无法编译我的代码,我做错了什么? (这是我到目前为止所拥有的):
#include <iostream>
#include <cstring>
#include <vector>
#include <string>
using namespace std;
int main(){
vector<string> cmdline;
string command = "";
cout << '$';
getline(cin, command);
command.c_str();
char* tokchar;
tokchar = strtok(command, " ");
while(tokchar){
cmdline.push_back(tokchar);
tokchar = strtok(NULL, " ");
}
return 0;
}
具体来说,编译器错误是:cannot convert 'std::string' to 'char*'for argument 1 to 'char* strtok(char*, const char*)' 它说错误出现在我设置 tokchar =...;
我不确定这段代码是否能如我所愿。我将如何修复它并使其将所有命令行参数放入由“”分隔的向量中?
【问题讨论】: