日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C++ 笔记(36)— 接收输入字符串的几种方法

發布時間:2023/11/28 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 笔记(36)— 接收输入字符串的几种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++中常見的幾種輸入字符串的方法如下:
std::cinstd::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)— 接收输入字符串的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。