-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