我正在試着製作一個程序,告訴用戶輸入一個句子或其他東西。 然後,我需要查找字符串中有多少個數字,字符,所有其他字符(符號,句號,空格等)。檢查字符串的每個元素的數字或字符
爲什麼我的代碼不工作?我的事情與find_first_of一次檢查整個字符串有關,而我希望它只檢查索引「我」的位置。
[錯誤]請求構件 'find_first_of' 在「s1.std :: basic_string的< _CharT,_Traits,_Alloc> ::操作符[],標準::分配器>(((標準:: basic_string的:: size_type)i))',這是非類類型'char'是我在下面2條代碼行中得到的錯誤。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
int numbers = 0;
int characters = 0;
int others = 0;
cout << "Please type in Something: ";
getline(cin, s1);
cout << "You typed: " << s1 << endl;
for(int i = 0; i < sizeof(s1)/sizeof(string); ++i)
{
if(s1[i].find_first_of("123456789") != string::npos) // Here is where the compiler errors
{
++numbers;
}
else if(s1[i].find_first_of("AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz") != string::npos) // And here with the same error
{
++characters;
}
else
{
++others;
}
}
cout << "Total numbers in the string are: " << numbers << endl << "Total characters in the string are: " << characters << endl << "Total special characters, symbols, spaces etc... are: "<< others;
return 0;
}
使用'std :: isalpha()'和'std :: isdigit()'來檢查一個字符是字母還是數字。沒有必要使用'find_first_of' – PaulMcKenzie 2014-12-11 02:58:05
謝謝我的朋友,我現在就試試。順便說一句,你可以告訴我,find_first_of在這裏實際上是錯誤的嗎?就像爲什麼編譯器不接受它?編輯:我不能仍然使用is alpha或isdigit,因爲我得到相同的eroor.But如果我使用它像這樣s1.find_first_of()或s1.isdigit()而不是s1 [i] .find_first_of和s1 [i]。 isdigit()然後它可以工作,但我需要檢查每個特定的索引。所以我該怎麼做? – Johnson 2014-12-11 03:00:18
我更新了我的答案,爲什麼你的方法沒有編譯。 – PaulMcKenzie 2014-12-11 03:09:06