你能否输入一个输入的换行符(C ++)?

时间:2015-02-15 08:42:04

标签: c++ newline

说我希望能够用格式化(即换行符,标签符号)来宣传

#include <iostream>
using namespace std;
string str;
int main() 
{
getline(cin, str);
cout << str;
}

所以我会输入类似Hey\nThere之类的内容,以便在嘿和那里之间获得换行符。但是,它会准确地吐出我输入的内容(Hey\nThere)。是否有可能像我希望的那样对其进行宣传(见下文)?

Hey
There

1 个答案:

答案 0 :(得分:1)

您必须自己处理输入字符串。一个简单的实现如下:

std::string UnescapeString( std::string input ){
    size_t position = input.find("\\");
    while( position != std::string::npos ){
        //Make sure there's another character after the slash
        if( position + 1 < input.size() ){
            switch(input[position + 1]){
                case 'n': input.replace( position, 2, "\n"); break;
                case 't': input.replace( position, 2, "\t"); break;
                case 'r': input.replace( position, 2, "\r"); break;
                default: break;
            }
        }
        position = input.find("\\", position + 1);
    }
    return input;
}

您当然可以为char转义序列,Unicode转义序列和其他可能需要的转义序列添加更复杂的解析规则。