-3
我正在为学校实验室工作。最后一个练习的目标是制作一个程序,可以扫描用户输入的字符串,查找任何遭受“capslock syndrome”(即以小写字母开头且全部大写字母,IHI tHIS)的单词。这是我到目前为止有:如何在C++中的字符串中打印从一个索引到另一个索引的字符范围
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string s("");
int len;
do
{
cout<<"Enter a string. I will check it for \"caps-lock syndrome\"\n";
getline(cin, s);
cout<<endl;
cout<<s<<"\n\n";
len = s.length();
for(int i=0; i<len; i++){
if(islower(s[i])){
for(int j=i+1; j<len; j++){
if(isupper(s[j])){
cout<<s[j];
}
}
}
}
} while(!s.empty());
return 0;
}
发生的事情是当用户输入像串“大写锁定”输出结果应该是: CAPS LOCK
然后循环回到程序的开始。我现在得到的问题是我无法打印完整的单词(只是大写字母),而且我无法让每个单词像我想要的那样打印到自己的行中。
当输入诸如'喜欢tHIS'给出输出什么,你期待什么呢? – Shibli
预期的顺序应该是用户输入一个字符串,程序将扫描任何以小写字母开头并且后面都带有大写字母的单词,并在屏幕上显示违规单词。因此,如果我输入了一个字符串“cAPS lOCK is on”,输出应该是:cAPS lOCK(每个字在它自己的行上)。我遇到的问题是,我无法弄清楚如何打印整个单词,我无法让它们在单独的行上输出。 –
用'std :: stringstream' [与此处的选项2类似](http://stackoverflow.com/a/7868998/4581301)将行分成单词,然后单独扫描单词。这样,你只需要把这个单词的第一个字母看作更低。减少了附加功能。 – user4581301