if 语句错误地识别括号中的空格
If statement incorrectly recognising spaces in a bracket
我正在编写一种迷你编程语言,目前正在研究我的第一个正确命令。我的命令称为"prout("示例文本"("。当我的程序看到单词 prout 的字母 t 和左括号之间的空格时,它会输出意外的缩进错误,这应该会发生。不应该发生的是它识别用户想要输出的文本中的空格并输出意外的缩进错误。有没有人知道如何实现一种方法来阻止程序识别用户想要输出的文本中的空格是意外的缩进错误?
这是当前输出:
>>> prout("Hello")
Hello
>>> prout ("Hello")
Error: Unexpected indent //That is supposed to happen
>>> prout("Hello I am a programmer!")
Error: Unexpected indent //That is the problem
我尝试使用属性 .npos 来过滤空格,但这不起作用。
#include <iostream>
#include "printoutput.h"
#include "Line.h"
using namespace std;
void printoutput::print(string input) {
int i = 0;
int length = input.length();
if (input.find('(') != input.npos && (input.find(')') != input.npos) && (input.find('"') != input.npos)) {
for (int i = 0; i <= input.length(); i++) {
char letter = input[i];
if (input.find(' ') != input.npos && (i == 5)) {
cout << "Error: Unexpected indent";
break;
}
if ((letter == 'p') && (i != 0) || (letter == 'r') && (i != 1) || (letter == 'o') && (i != 2) || (letter == 'u') && (i != 3) || (letter == 't') && (i != 4) || (letter == '(') && (i != 5) || (letter == '"') && (i != 6 && i != input.length() - 2) || (letter == ')') && (i != length - 1)) {
char inputletter = input[i];
cout << inputletter;
}
else if ((i != 0 && (i != 1) && (i != 2) && (i != 3) && (i != 4) && (i != 5)) && (i != 6 && i != length - 2) && (i != length - 1)) {
char inputletter = input[i];
cout << inputletter;
}
}
}
if (input.find('"') == input.npos) {
cout << "Syntax error: Missing quotation marks";
}
else if (input.find('(') == input.npos || (input.find(')')) == input.npos) {
cout << "Syntax error: Missing parenthesis";
}
cout << endl;
}
我希望输出显示用户想要输出的文本以及他们可能包含的空格。
想想这条线的作用
if (input.find(' ') != input.npos && (i == 5)) {
如果表示输入是否包含空格,如果i
等于 5,则输出错误。由于i
循环遍历字符串的所有索引,因此对于长度至少为 5 的任何字符串都是如此,该字符串在任何地方都包含一个空格。
我在想你真正的意思是这个
if (input[5] == ' ')
但我不太确定。
相关文章:
- 2D数组来自文本输入,中间有空格
- 提升 ASIO 无法识别计时器对象
- 从udp接收帧对于人脸识别来说太慢
- 模板类无法识别友元运算符
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- std::visit无法识别类型
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- 移除前面有空格的前2个字符串
- 无法识别模板功能
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何在LLVM中dyn_cast以识别StoreInst?
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- if 语句错误地识别括号中的空格
- 试图获得一个C++switch语句来识别空格、制表符等
- 使字符数组在输入时识别空格