C++ 笔记(36)— 接收输入字符串的几种方法
C++中常見的幾種輸入字符串的方法如下:
std::cin、std::cin.get()、std::cin.getline()、std::getline()、std::gets()、std::getchar()
1. std::cin
1.1 最常用、最基本的用法,輸入一個數字
#include <iostream>int main()
{int a, b;std::cin >> a >> b;std::cout << a + b << std::endl;return 0;
}
輸入輸出結果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
2
3
5
wohu@ubuntu-dev:~/project/cpp$
1.2 接受一個字符串,遇“空格”、“Tab”、“回車”都結束
#include <iostream>int main()
{char a[10];std::cin >> a ;std::cout << a << std::endl;return 0;
}
輸入輸出結果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdcef
abdcef
wohu@ubuntu-dev:~/project/cpp$ ./main.out
ab cdef # 遇空格結束,所以不能輸入多個單詞
ab
wohu@ubuntu-dev:~/project/cpp$
2. std::cin.get()
2.1 std::cin.get() 用來接收單個字符
#include <iostream>int main()
{char ch;ch = std::cin.get();std::cout << ch << std::endl;return 0;
}
輸入輸出結果:只能用于輸入一個字符。
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdef
a
wohu@ubuntu-dev:~/project/cpp$
2.2 std::cin.get(字符數組名,接收字符數)
#include <iostream>int main()
{char ch[10];std::cin.get(ch, 10);std::cout << ch << std::endl;return 0;
}
輸入輸出結果:
- 可以接收空格
- 輸入超 10 個字符時,接收 9個字符+1個
\0
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdefghijkl
abcdefghi
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcd efgh
abcd efgh
wohu@ubuntu-dev:~/project/cpp$
2.3 cin.get(無參數)主要是用于舍棄輸入流中的不需要的字符,或者舍棄回車,彌補cin.get(字符數組名,接收字符數目)的不足
#include <iostream>int main()
{char ch[10];std::cin.get(ch, 10);std::cin.get(); //用于吃掉回車,相當于getchar();std::cout << ch << std::endl;std::cin.get(ch, 5);std::cout << ch << std::endl;return 0;
}
輸入輸出:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdedds
abdedds
adbcd
adbc
wohu@ubuntu-dev:~/project/cpp$
注釋掉 std::cin.get()之后
#include <iostream>int main()
{char ch[10];std::cin.get(ch, 10);// std::cin.get();std::cout << ch << std::endl;std::cin.get(ch, 5);std::cout << ch << std::endl;return 0;
}
輸入輸出結果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdecdf
abdecdfwohu@ubuntu-dev:~/project/cpp$
3. std::cin.getline()
3.1 接受一個字符串,可以接收空格并輸出
#include <iostream>int main()
{char ch[20];std::cin.getline(ch, 5);std::cout << ch << std::endl;return 0;
}
輸入輸出:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdef
abcd
wohu@ubuntu-dev:~/project/cpp$
接受 5 個字符到 ch中,其中最后一個為 \0,所以只看到 4 個字符輸出。
?
把 5 改成 20 后運行:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abc def ghi
abc def ghi
wohu@ubuntu-dev:~/project/cpp$
3.2 擴展
std::cin.getline()實際上有三個參數,cin.getline(接受字符串到m,接受個數5,結束字符),當第三個參數省略時,系統默認為 \0 是 /n吧。
?
如果將例子中 std::cin.getline()改為 std::cin.getline(m,5,'a');
- 當輸入
jlkjkljkl時輸出jklj; - 輸入
jkaljkljkl時,輸出jk;
4. getline()
接受一個字符串,可以接收空格并輸出,需包含 #include<string> 。
#include <iostream>
#include <string>int main()
{std::string str = "";getline(std::cin, str);std::cout << str << std::endl;return 0;
}
輸出結果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abc def gh
abc def gh
wohu@ubuntu-dev:~/project/cpp$
和 cin.getline()類似,但是 cin.getline()屬于 iostream流,而 getline()屬于 string流,是不一樣的兩個函數。
?
5. getchar
接受一個字符,需包含 #include<string>
#include <iostream>
#include <string>int main()
{char ch;ch = getchar(); //不能寫成 getchar(ch);std::cout << ch << std::endl;return 0;
}
輸入輸出結果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abd
a
wohu@ubuntu-dev:~/project/cpp$
getchar()是 C語言的函數,C++也可以兼容,但是盡量不用或少用;
?
6. gets()
warning: ‘char* gets(char*)’ is deprecated
該函數已被棄用,盡量少用。
原文地址:https://blog.csdn.net/u011486738/article/details/82082405
?
描述
寫出一個程序,接受一個由字母、數字和空格組成的字符串,和一個字母,然后輸出輸入字符串中該字母的出現次數。不區分大小寫,字符串長度小于500。
輸入描述:
第一行輸入一個由字母和數字以及空格組成的字符串,第二行輸入一個字母。
輸出描述:
輸出輸入字符串中含有該字符的個數。
?
示例1
輸入:
ABCabc
A
輸出:
2
#include <iostream>
#include <string>using namespace std;int main(){string s;int res = 0;while(getline(cin,s)){char a;cin>>a;cin.ignore(); //此處ignore()不加也可以a = tolower(a);for(int i = 0 ; i < s.size(); i++){if(s[i]==a||s[i]== a-32){res++;}}}cout<<res<<endl;
}
本題要點:
1.注意cin 與 getline的使用 如果是先cin輸入一定要加cin.ignore() 原因:cin輸入如果用回車結尾,那么getline獲得的第一個字符就是‘\n’,輸入的時候按個enter啥效果就不用我給大家介紹了吧。
2.大小寫的判斷注意toupper和tolower的靈活使用
總結
以上是生活随笔為你收集整理的C++ 笔记(36)— 接收输入字符串的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国氟橡胶产业竞争现
- 下一篇: 2022-2028年中国橡胶密封制品行业