当前位置: 首页>>代码示例>>C++>>正文


C++ StringBuffer::getc方法代码示例

本文整理汇总了C++中StringBuffer::getc方法的典型用法代码示例。如果您正苦于以下问题:C++ StringBuffer::getc方法的具体用法?C++ StringBuffer::getc怎么用?C++ StringBuffer::getc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在StringBuffer的用法示例。


在下文中一共展示了StringBuffer::getc方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: get_type

std::string get_type(StringBuffer &bin) {
    char ch = bin.peekc(); // 버퍼의 첫 문자를 확인한다
    if (is_fnamch(ch) == false) // 올바른 형식이 아니면 예외
        throw Exception("잘못된 입력입니다.");
    std::string result = "";
    while (bin.is_empty() == false) { // 버퍼에 문자가 남아있는 동안
        ch = bin.getc(); // 문자를 획득하고 확인한다
        if (is_namch(ch) == false) { // 더 이상 형식 문자가 아니면
            bin.ungetc(); // 아직 해석되지 않은 문자를 버퍼에 되돌리고
            break; // 형식이 끝났으므로 탈출한다
        }
        result += ch; // 획득한 문자를 결과 객체에 넣는다
    }
    return result;
}
开发者ID:HDNua,项目名称:JSCC_Lecture,代码行数:15,代码来源:dcl.cpp

示例2: dirdcl

void dirdcl(StringBuffer &bin, StringList &vout) { // 직접 선언자를 분석하고 결과 출력
    char ch = bin.peekc();
    if (is_fnamch(ch)) { // direct-declarator: 이름 (2)
        std::string identifier = "";
        while (bin.is_empty() == false) {
            ch = bin.getc();
            if (is_namch(ch) == false) {
                bin.ungetc();
                break;
            }
            identifier += ch;
        }
        if (identifier.empty()) // 식별자에 추가된 문자가 없다면 예외
            throw Exception("올바른 식별자 이름이 아닙니다.");
        vout.push_back(identifier);
    }
    else if (ch == '(') { // direct-declarator: (declarator) (3)
        bin.getc(); // ( 문자를 해석해서 진입했으므로 다음으로 넘긴다
        dcl(bin, vout);
        if (bin.peekc() != ')') // 닫는 괄호가 없으면 예외
            throw Exception("닫는 괄호가 없습니다.");
        bin.getc(); // ) 괄호 검사를 진행했으므로 다음으로 넘긴다
    }
    // direct-declarator: direct-declarator() (4)
    // direct-declarator: direct-declarator[] (5)
    while (bin.is_empty() == false) {
        ch = bin.peekc();
        if (ch == '(') { // 함수 기호 획득
            bin.getc(); // ( 괄호를 해석해서 진입했으므로 넘긴다
            if (bin.peekc() != ')') // 닫는 괄호가 없으면 예외
                throw Exception("잘못된 함수 기호입니다.");
            bin.getc(); // ) 괄호를 해석했으므로 다음으로 넘긴다
            vout.push_back("()");
        }
        else if (ch == '[') { // 배열 기호 획득
            bin.getc(); // [ 괄호를 해석해서 진입했으므로 넘긴다
            if (bin.peekc() != ']') // 닫는 괄호가 없으면 예외
                throw Exception("잘못된 배열 기호입니다.");
            bin.getc(); // ] 괄호를 해석했으므로 다음으로 넘긴다
            vout.push_back("[]");
        }
        else { // 이외의 경우 반복문을 탈출한다
            break;
        }
    }
}
开发者ID:HDNua,项目名称:JSCC_Lecture,代码行数:46,代码来源:dcl.cpp

示例3: dcl

void dcl(StringBuffer &bin, StringList &vout) { // 선언자를 분석하고 결과 출력
    // declarator: * direct-declarator (1)
    int pointer_count = 0;
    char ch;
    while (bin.is_empty() == false) { // 버퍼에 문자가 남아있는 동안
        ch = bin.getc(); // 문자를 획득하고 확인한다
        if (ch == '*') { // *라면 그만큼 포인터를 출력하기 위해
            ++pointer_count; // 카운터를 증가시킨다
        }
        else { // *가 아니라면 포인터를 되돌리고 탈출한다
            bin.ungetc();
            break;
        }
    }
    // declarator: * direct-declarator (2)
    dirdcl(bin, vout); // *을 모두 획득했으므로 직접 선언자를 분석한다
    while (pointer_count > 0) { // 선언자의 분석이 오른쪽에서 먼저 진행되므로
        vout.push_back("*"); // 왼쪽에서 획득한 기호를 오른쪽의 분석이
        --pointer_count; // 종료된 후에 출력해야 한다
    }
}
开发者ID:HDNua,项目名称:JSCC_Lecture,代码行数:21,代码来源:dcl.cpp


注:本文中的StringBuffer::getc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。