将作为数学运算符的 char 添加到随机字符串
Adding char which is a math operator to random string
我正在尝试将“+”、“-”、“*”等添加到字符串中,但它不起作用。
假设我有字符串“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();
}
}
}
从您提供的代码中,我发现一个问题会导致最后一个字符无法打印。这是因为当下一个字符是 space 时,您只打印 tmp
。所以“12 3 +”会打印“12”、“3”。然后 tmp
包含值“+”,因为它从未打印或清除,但从未打印过。如果您的输入字符串是“12 3 +”(注意 space),也会打印“+”字符。
如果 tmp
仍然包含任何数据,这可以通过在循环完成后打印和清除 tmp
来解决。
除非字符串以 space 结尾,否则您的循环永远不会显示字符串的最后一个标记。当你有 "12 3 +"
时,你在 12
中读到 space,打印 12
并清除字符串。你对 3
做同样的事情。然后你得到 +
但因为那是字符串中的最后一个字符你永远不会 运行 if 语句的 else
部分打印出来。您可以通过几种方式解决此问题。您可以在循环后检查 temp
是否不为空,如果不为空则进行处理。您可以在循环中重新处理您的逻辑,以处理当您位于最后一个字符并且它不是 space 时的情况。您可以将 space 添加到输入的末尾,这样它将以 space 结束并且循环按原样工作。
问题是 +
是你的最后一个字符,所以你不会进入 else 块。
std::cout
temp
循环后将显示您缺少的字符:
我正在尝试将“+”、“-”、“*”等添加到字符串中,但它不起作用。
假设我有字符串“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();
}
}
}
从您提供的代码中,我发现一个问题会导致最后一个字符无法打印。这是因为当下一个字符是 space 时,您只打印 tmp
。所以“12 3 +”会打印“12”、“3”。然后 tmp
包含值“+”,因为它从未打印或清除,但从未打印过。如果您的输入字符串是“12 3 +”(注意 space),也会打印“+”字符。
如果 tmp
仍然包含任何数据,这可以通过在循环完成后打印和清除 tmp
来解决。
除非字符串以 space 结尾,否则您的循环永远不会显示字符串的最后一个标记。当你有 "12 3 +"
时,你在 12
中读到 space,打印 12
并清除字符串。你对 3
做同样的事情。然后你得到 +
但因为那是字符串中的最后一个字符你永远不会 运行 if 语句的 else
部分打印出来。您可以通过几种方式解决此问题。您可以在循环后检查 temp
是否不为空,如果不为空则进行处理。您可以在循环中重新处理您的逻辑,以处理当您位于最后一个字符并且它不是 space 时的情况。您可以将 space 添加到输入的末尾,这样它将以 space 结束并且循环按原样工作。
问题是 +
是你的最后一个字符,所以你不会进入 else 块。
std::cout
temp
循环后将显示您缺少的字符: