【发布时间】:2020-11-19 13:51:28
【问题描述】:
这是我第一次进入该网站,目前我是大学学生,正在学习 C++。在给定的作业中,我遇到了一个问题,并且一直在尝试解决它,但找不到完整的解决方案。简而言之,我需要输入直到读取“END”或“end”这个词。 例如;
Enter source string: there are good times
and there are bad times
END
Enter search string: are+
...然后继续
问题是我使用cin.getline() 函数(我将在稍后展示),但我无法同时控制“END”和“end”。 cin.getline() 函数只检查一个。
这是我的一段代码;
#define MAX_TARGET_LENGTH 500
char target[MAX_TARGET_LENGTH];
cout << "Enter source string: ";
cin.getline (target, MAX_TARGET_LENGTH, 'END');
如你所见,我需要让它检查“END”或“end”,以先到者为准。
是否有任何方法或任何其他功能使其按应有的方式运行?
感谢您的关注,如果我输入的问题在某种程度上令人困惑或错误,抱歉。
【问题讨论】:
-
'END'是一个多字符的字符常量,它可能不是你想要的。 -
如果您需要在字符串开头和单词的第一个实例之间的子字符串,我会使用
std::string::substr和std::string::find -
为什么你使用带有
cin.getline的C 字符串而不是带有std::getline的std::string?这是我们应该知道的某种限制吗? -
我之前用过
getline(),但它只读取一行,一旦按下回车,它就会读取并将其作为字符串读取,但没有限制。 -
@MikeCAT 是的,我明白了,因为它在存储的句子末尾留下字母 E 和 N,但我想我以后可以删除它们。