提问人:Ahmet Yücel 提问时间:11/19/2020 更新时间:11/20/2020 访问量:344
如何将输入存储为字符串,直到在C++中输入一个或多个特定字符串?
How to store input as a string until one or more specific string(s) has/have been entered in C++?
问:
这是我第一次进入该网站,目前我是大学的学生,正在学习C++。在给定的家庭作业中,我遇到了一个问题,并一直在尝试解决它,但找不到完整的解决方案。简而言之,我需要输入,直到读出“END”或“end”这个词。 例如;
Enter source string: there are good times
and there are bad times
END
Enter search string: are+
...然后继续
问题是我使用函数(我稍后将展示),但我无法同时控制“END”和“end”。 函数只检查一个。cin.getline()
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”,以先到者为准。
有什么方法或任何其他功能可以使它按应有的方式运行?
感谢您的关注,如果我的问题输入在某种程度上令人困惑或错误,对不起。
答:
0赞
captainmoron
11/20/2020
#1
我想出了以下解决方案:
#include <iostream>
#include <vector>
using namespace std;
#define MAX_TARGET_LENGTH 500
int main() {
char target[MAX_TARGET_LENGTH];
while(true)
{
cout << "Enter source string: ";
while(true)
{
cin.getline (target, MAX_TARGET_LENGTH);
std::string line = target;
if(line.compare("end") == 0 || line.compare("END") == 0)
{
break;
}
}
}
return 0;
}
我正在使用 String 类来解决问题。
字符串是表示字符序列的对象。
它们具有有用的功能。其中之一是“比较”功能。有了它,您可以检查一个字符串是否等于另一个字符串。如果字符串相同,则该函数将返回 0。否则,它将返回 1 或 -1(更多信息在这里)。
主要内容在内部 while 循环中。
while(true)
让 while 循环永远持续下去。
你会得到一个新的输入行
cin.getline (target, MAX_TARGET_LENGTH);
存储在变量目标中。然后,您可以将“target”转换为字符串
std::string line = target;
因为,这些类型是兼容的。然后,if 语句检查输入中的“end”或“END”。
if(line.compare("end") == 0 || line.compare("END") == 0)
{
break;
}
如果其中一个或两个语句都为真,则“break”将退出内部 while 循环,并使程序再次打印“Enter source string:”。
评论
0赞
Ahmet Yücel
11/20/2020
感谢您抽出时间接受采访。这真的很有帮助,你:)挽救了这一天。
0赞
captainmoron
11/20/2020
很高兴能帮上忙。请考虑将我的答案标记为解决方案。谢谢。
评论
'END'
是一个多字符字符常量,它可能不是你想要的。std::string::substr
std::string::find
cin.getline
std::string
std::getline
getline()