저는 토큰 화기를 C++로 작성하고 있습니다. 파일에서 ""로 묶인 문자열 문자와 [및] 기호를 검색합니다. 토큰 객체를 생성하여 벡터에 저장합니다. 건너 뛰려면 input.get()을 호출하여 모든 공백 문자를 무시해야합니다. 그러나이 작업을 수행하는 올바른 방법인지 확신 할 수 없습니다. 나는 = 대신 ==와 같은 어리석은 오류를 만들 수있는 것처럼 느낀다. 나는 내가 뭘 잘못 내 오류가 UnterminatedStringLiteral 얻을이토큰 화기 작성시 문제가 발생했습니다.
] ]
"ddsd"
"sdsd"
[[]]]]][[
같은 파일에이 코드를 실행하면 여기에 내 현재 코드 그러나
vector<Token> tokenize(wstring file)
{
ifstream input = ifstream(file);
vector<Token> tokens;
while(input.peek() != std::char_traits<char>::eof())
{
wchar_t ch = (wchar_t) input.peek();
if (isspace(ch))
{
input.get();
}
else if(ch == '[' || ch == ']')
{
input.get();
wstring str(&ch);
tokens.push_back(Token(SYMBOL, str));
}
else if (ch == '"')
{
wstringstream accum;
input.get();
while(input.peek() != '"')
{
if(input.peek() == std::char_traits<char>::eof())
endProgram(L"Unterminated String Literal");
accum<<input.peek();
input.get();
}
tokens.push_back(Token(STRING, accum.str()));
}
}
for(int i = 0; i < tokens.size(); i++)
{
wcout<<tokens.at(i).getData()<<endl;
}
return tokens;
}
입니까? 나는 C++을 처음 사용하기 때문에 간단한 explantion이 좋을 것이다.
오류 결과 'in.peek()'의'std :: char_traits :: eof()'는 '-1'이 아닌 철자를 사용합니다. '-1' 값이 일반적으로 사용되지만, 값이 -1 일 필요는 없습니다. –
오 불이 바뀐다 – Popgalop
여전히 오류가 발생한다 – Popgalop