cin >> m 能否改 scanf?可以但不推薦。string 無固定緩衝區,需預先 m.resize(100); scanf("%s", &m[0]);,且不安全。C++ 首選 cin / getline。
a = m.length() 含義將 string m 的**當前字符長度**賦給 int a。
switch(m[i]) 用法遍歷字符串每個字符,按字符值分支處理(如統計元音/辅音)。
m[i-1] / m[i+1]m[i-1]:第 i 個字符(下標從 0 起,i 從 1 開始)。m[i+1]:第 i+2 個字符。i > 0 / i+1 < m.length(),否則越界 UB。printf("%c", m[i])輸出單個字符,%c 對應 char,m[i] 正是 char 類型,完全合法。
for (char ch : m) (C++11) 或 for (size_t i=0; i。 scanf 處理 string,擁抱 iostream 類型安全。