奇怪的字符串行为

时间:2014-08-24 22:13:18

标签: c++ string string-comparison

我正在尝试编写模仿控制台的代码。第一次运行正常,但从那里开始,字符串神奇地以空格开始,导致比较失败。在窗口中绘制时,存在空白区域,但如果写入系统控制台则不存在。

strContent存储所有显示的内容,而strCurrLine逐行保存用户输入。

strContent += "\n";
std::cout << strCurrLine << "!" << std::endl;

if (strCurrLine == "hello")
{
    strContent += "world";
}
else
{
    strContent += "Err: Command is not recognized";
}

strContent += "\n";

strCurrLine.clear();

Screenshot

void console::insertChar(char newChar)
{
    if (newChar == 8)   // if char is backspace
    {
        if (!strCurrLine.empty())   // before deleting, make sure string isnt empty
        {
            strContent.pop_back();  // delete last char
            strCurrLine.pop_back(); // ...
        }
    }
    else
    {
        strContent += newChar;          // add the char to displayed string
        strCurrLine += newChar;         // add the char to parsing string
    }
}

1 个答案:

答案 0 :(得分:1)

经过一些调试后,我发现按下返回键似乎在字符串前添加'\ r'。使用以下代码将其删除。

if (strCurrLine[0] == '\r')
    strCurrLine.erase(0, 1);