所以我有一個硬件問題我的班級,我必須存儲十個名字,大寫他們,然後按字母順序排序。我們剛開始使用字符串,有些東西對我來說仍然有點困惑。此代碼可以將所有名稱存儲在字符串數組中,但UpperCase似乎不起作用。我不知道,但我認爲這是因爲我有第二次循環運行帽的次數,這將是10.並且因爲不是每個字符串都會有10個元素,我遇到問題了嗎?..是這樣嗎?這是別的嗎?那麼我試圖通過使用.length(函數?)來解決這個問題,以查找數組中每個名稱的長度,但我總是會得到錯誤。任何幫助表示讚賞,謝謝!字符串排列作業
#include<iostream>
#include<string>
using namespace std;
void UpperCase(string names[],int cap);
void print(string names[],int cap);
void swap(string names[],int &x,int &y);
string names[10];
int main(){
char a;
cout<<sizeof(a);
for(int i=0;i<10;i++){
cout<<"Enter a name for student "<<i+1<<" : ";
cin>>names[i];
cout<<endl;
}
UpperCase(names,10);
cout<<endl;
print(names,10);
cout<<endl;
print(names,10);
return 0;
}
void print(string names[],int cap){
for(int i=0;i<cap;i++)
cout<<names[i]<<endl;
}
void UpperCase(string names[],int cap){
for(int student=0;student<cap;student++){
for(int letter=0;letter<names[student].length();letter++){
if(names[student][letter]>='a')
names[student][letter]-=('a'-'A');
}
}
}
STL是否沒有問題? –
你說'cap'是'UpperCase()'中的內循環的錯誤終止條件,'.length()'是正確的,所以請給出後者的代碼。另外:如果名稱包含字符「a」會發生什麼? –
有趣的是,您將使用'std :: string',然後使用數組而不是更高級的容器類。 –