我试图将“ +”,“-”,“ *”等添加到字符串中,但是它不起作用。
让我们说我有字符串“ 12 3 +”,然后使用string tmp
获取空格之间的值,例如“ 12”“ 3”“ +”。我的cout
打印“ 12”和“ 3”,但是缺少“ +”
int ONP() {
string wyrazenie;
getline(cin, wyrazenie);
string tmp;
for (int i = 0; i < wyrazenie.length(); ++i) {
if (!isspace(wyrazenie[i])) {
tmp += wyrazenie[i];
} else {
cout << tmp << endl;
SOME CODE.....
tmp.clear();
}
}
}
答案 0 :(得分:1)
答案 1 :(得分:0)
从您提供的代码中,我看到一个问题,该问题会导致最后一个字符无法打印。这是因为仅当下一个字符为空格时才打印tmp
。因此,“ 12 3 +”将打印“ 12”,“ 3”。然后tmp
包含值“ +”,因为它从未打印或清除,但从未打印过。如果您输入的字符串是“ 12 3 +”(注意空格),也会打印出“ +”字符。
如果tmp
仍然包含任何数据,则可以在循环完成后通过打印并清除tmp
来解决。
答案 2 :(得分:0)
您的循环将永远不会显示字符串的最后一个标记,除非字符串以空格结尾。当您拥有"12 3 +"
时,您会在12
中看到一个空格,请打印12
并清除字符串。您对3
执行相同的操作。然后,您会得到+
,但是由于它是字符串中的最后一个字符,因此您永远不会运行if语句的else
部分来将其打印出来。您可以通过几种方法解决此问题。您可以检查循环后temp
是否不为空,如果不是,则进行处理。您可以在循环中重做逻辑,以处理最后一个字符(不是空格)时的情况。您可以在输入的末尾添加一个空格,这样它将以一个空格结束,并且循环按原样工作。