나는 bash와 같은 기본 터미널을 구현하려고하는데, 현재는 (bash에서 명령을 입력하는 것처럼) 사용자 입력을 받아들이려고하고 있으며, 각각 공백으로 나눠서 벡터에 넣으려고합니다. 나는 벡터로부터 읽고 각 명령을 하나씩 살펴볼 수있다. 내 코드를 컴파일 할 수없는 것 같은데, 내가 뭘 잘못하고 있니? (여기서 내가 지금까지 가지고 무엇을) :strtok() C++ strtok()을 사용하여 문자열을 분할하고 각 부분을 벡터에 넣으려면 어떻게해야합니까?
#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;
}
특히, 컴파일러 오류는 다음과 같습니다 * strtok를 (숯불 * const가 문자 문자 '에 인수 1'의 char * '에'표준 : : 문자열을 '변환 할 수 없습니다 *) ' 오류는 내가 설정 한 행에 있다고합니다. tokchar = ...;
이 코드가 내가 원하는 것을 수행 할 수 있는지 확실하지 않습니다. 어떻게 수정하고 모든 명령 행 인수를 ""로 구분 된 벡터에 넣을 수 있습니까?
, 나는 C++ 11 선으로 컴파일해야합니까? –
@TristanZickovich C++ 03 이상이 작동합니다. 제공된 링크에서 자세한 내용을 읽을 수 있지만'#include '가 시작됩니다. 행운을 빕니다! –