所以我知道字符串中的最后一个字符是空字符,前面是什么字符?喜欢string[0-1]
处的角色?我尝试cout
但它只是空白。我需要知道的原因是if语句检查string[0-1]
是否等于该字符。整个程序是一个计算器,我试图处理用户输入错误,如操作符和操作数之间没有空格,问题是有减号-
和负数符号-
。所以在我的if语句中我有if(string[i] == '-' && string[i-1] != ' '){return false;}
但是如果字符串中的第一个数字是负数,则返回false,因此我的困境。
答案 0 :(得分:1)
所以我知道字符串中的最后一个字符是空字符
不,它不是,但由于各种技术原因,C字符串和std::string
都会在字符串之后立即放置一个空字符。
字符串之前没有这样的东西,因为没有理由。包含表达式string[-1]
的程序具有未定义的行为,因为这是字符串中不存在的索引,并且没有特殊情况可以赋予它任何含义。
在我的if语句中我有
if(string[i] == '-' && string[i-1] != ' '){return false;}
您可以尝试以下内容:
if (string[i] == '-' && (i > 0 && string[i-1] != ' '))
我无法弄清楚你想要的逻辑是什么,所以你必须调整它来做你想做的事。