我正在尝试编写模仿控制台的代码。第一次运行正常,但从那里开始,字符串神奇地以空格开始,导致比较失败。在窗口中绘制时,存在空白区域,但如果写入系统控制台则不存在。
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();
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
}
}
答案 0 :(得分:1)
经过一些调试后,我发现按下返回键似乎在字符串前添加'\ r'。使用以下代码将其删除。
if (strCurrLine[0] == '\r')
strCurrLine.erase(0, 1);