내 코드는 아래에 게시됩니다. 구분 기호 "()"를 사용하여 구문 분석하고 문자열을 cpp의 정수로 변환 할 수 있기를 원합니다. 134 : 오류 : '숯불 *'C++에서 getline과 strtok을 사용하여 여러 구분자를 구문 분석하는 방법에 대해 매우 혼란 스럽습니다.
GraphTest.cpp에 'const를 숯불 *'에서 유효하지 않은 변환 : (134)
while(getline(fin, line))
{
x = atoi((strtok(line.c_str(),'(,)'));
xx = atoi((strtok(NULL,"(),"));
xxx = atoi((strtok(NULL,"(),")));
cout << x << " " << xx << " " << xxx << "\n";
}
하지만 어떤 이유로 내가 할 다음과 같은 오류
GraphTest.cpp
: 오류 : 'char * strtok (char *, const char *)'의 인수 1 초기화.c_str은 내 문자열을 ac 유형 문자열로 변환해야 atoi 및 strtok 함수를 사용할 수 있습니다. 나는 매우 혼란스럽고 어떤 도움을 주셔서 감사합니다.
은 평범하지 않은 문법을 사용하는 것처럼 보입니다. 렉싱 및 파싱에 적합한 도구를 선택하십시오 (예 : flex + bison 또는 boost spirit ...). –
' '(,)' '가 잘못되었습니다. 그것은''(,) "'이어야합니다. –
'c_str()'은'const char *'를 반환합니다. 이것은 문자열 내부 버퍼에 대한 수정 불가능한 상수 포인터입니다. 'strotok()'**는 토큰 화를 수행하기 위해 입력 문자열을 수정합니다 (그래서 const char * 대신 char *를 받아들입니다). –