c ++无法打印转义字符

时间:2014-09-22 22:57:21

标签: c++ linux

我正在尝试编写一个与某些需要以转义字符开头的命令(ascii 27)相互作用的程序,但由于程序在尝试打印转义符时似乎挂起,因此无法测试。该程序在Ubuntu机器中使用g ++编译,并从gnome-terminal:

运行
#include <cstdlib>
#include <iostream>
#include <unistd.h>
#include <limits>

using namespace std;

int main()
{
    string str;
    const int numSamples=10;
    const int escapeInt = 27;
    const char escapeChar = escapeInt;

//    sleep(30);
    //Ask for the latest test results
    cin.clear();
//    cin.ignore(numeric_limits<streamsize>::max());
    cout << "\n\n\n";
    cout << escapeChar << "PF2 -" << numSamples;
    cerr << "\n\n\n" << escapeChar << "PF2 -" << numSamples;
//    cin.ignore(2,'\n');
    getline( cin, str, '\n');
    cerr << str;

    int k=1;
    while (k<=numSamples)//getline(cin, str))
    {
        getline( cin, str, '\n');
        k++;
        cerr << str << endl;
    }

    return 0;
}

输出只有三个空白行,然后程序无响应。它甚至不响应ctrl-c。有关如何解决这个问题的任何建议吗?

1 个答案:

答案 0 :(得分:-1)

哦,我可以回答我自己的问题。正如@Alf所建议的那样,(谢谢)似乎我不应该尝试将转义序列打印到cerr,因为我的终端解释了它,在我的情况下使用gnome-terminal,它是一个no -no。

感谢有用的见识人员!