c++ - 如何将字母字符转换为相应的转义特殊字符

标签 c++ special-characters

我需要一个函数来为我提供从字母字符中转义的特殊字符。它仅在有意义时适用:'t'、'n'、'r'、'b'、'f'、'v'。

现在,这是我的实现:

typedef struct SpecialCharacter
{
    SpecialCharacter( char letter, char special )
    {
        m_letter = letter;
        m_special = special;
    }

    char m_letter;
    char m_special;
} SpecialCharacter;

typedef std::vector<SpecialCharacter> SpecialCharacters;

static const SpecialCharacters& GetSpecialCharacters()
{
    static SpecialCharacters characters;
    if ( characters.empty() )
    {
        characters.push_back( SpecialCharacter( 'b', '\b' ) );
        characters.push_back( SpecialCharacter( 'f', '\f' ) );
        characters.push_back( SpecialCharacter( 'n', '\n' ) );
        characters.push_back( SpecialCharacter( 'r', '\r' ) );
        characters.push_back( SpecialCharacter( 't', '\t' ) );
        characters.push_back( SpecialCharacter( 'v', '\v' ) );
    }
    return characters;
}

static bool getEscaped( char letter, char& escaped )
{
    for ( SpecialCharacters::const_iterator iter = GetSpecialCharacters().begin();
          iter != GetSpecialCharacters().end();
          ++iter )
    {
        if ( letter == iter->m_letter)
        {
            escaped = iter->m_special;
            return true;
        }
    }
    return false;
}

我不喜欢向字符 vector 添加元素的方式:

characters.push_back( SpecialCharacter( 'b', '\b' ) );

有什么办法可以做到:

characters.push_back( SpecialCharacter( 'b' ) );

然后有类似的东西:

SpecialCharacter( char letter )
{
    m_letter = letter;
    m_special = '\' + letter; // does not work, of course!
}

我想要一种将“\”和“n”合并到“\n”中的方法,或者通过任何不同的方式从“n”中获取“\n”...

编辑:case 语句是我在将代码移动到结构 vector 之前最初拥有的语句(因为我需要一个函数来解决问题)。所以这不是解决我的问题的好方法。我想在没有任何类型的“查找表”的情况下将 'n' 转换为 '\n'

最佳答案

n\n 是完全不同的字符。它们彼此之间没有任何关系。 \n 只是一个助记符。没有公式。

关于c++ - 如何将字母字符转换为相应的转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694007/

相关文章:

linux - 如何使用 sed 删除度数符号(M-0 又名上标零?)

c++ - Win32 自定义资源可以有多大?

c++ - 实例化点和名称绑定(bind)

c++ - 带有兰数的彩票程序

c++ - 在 Node.js 和 v8 中调用使用包装对象作为参数的函数

visual-studio-code - 停用 VSCode 中特殊字符的突出显示

r - 特殊字符和 RODBC

c# - 使用外部实体文件在 C# 中处理 XML

php - 这是哪个中点人物?

c++ - gcc 编译错误,在 Visual Studio 2008 C++ 中工作正常