转:C++输入一行字符串的一点小结

原文链接:

http://www.wutianqi.com/?p=1181



大家在学习C++编程时,一般在输入方面都是使用的cin.
而cin是使用空白(空格,制表符和换行符)来定字符串的界的。
这就导致了对于带有空格的字符串,比如”I Love C++奋斗乐园论坛”
只能读入”I”,后面的都无法读入。
这时怎么办?

 一.对于字符数组
方法一:getline()
读入整行数据,它使用回车键输入的换行符来确定输入结尾。
调用方法: cin.getline(str, len);
第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数。

1 #include <iostream>
 2 using namespace std;
 3  
 4 int main()
 5 {
 6     char str[30];
 7     cin.getline(str, 30);
 8     cout << str << endl;
 9     return 0;
10 }

方法二:get()

调用方法:cin.get(str, len);

1 #include <iostream>
 2 using namespace std;
 3  
 4 int main()
 5 {
 6     char str[30];
 7     cin.get(str, 30);
 8     cout << str << endl;
 9     return 0;
10 }

那么两者有何区别?
两者都读取一行输入,直至换行符。
然后,getline将丢弃换行符,而get()将换行符保留在输入序列里
所以,再使用cin.get()输入多行数据时,中间可以使用get()消除换行符。

1 #include <iostream>
 2 using namespace std;
 3  
 4 int main()
 5 {
 6     char str1[30], str2[30];
 7     cin.get(str1, 30);
 8     cin.get();
 9     cin.get(str2, 30);
10     cout << "str1: " << str1 << endl;
11     cout << "str2: " << str2 << endl;
12     return 0;
13 }

因为get(str, len)和get()都是cin的类成员,所以可以合并起来写:

1 #include <iostream>
 2 using namespace std;
 3  
 4 int main()
 5 {
 6     char str1[30], str2[30];
 7     cin.get(str1, 30).get();   // 注意这里!
 8     cin.get(str2, 30);
 9     cout << "str1: " << str1 << endl;
10     cout << "str2: " << str2 << endl;
11     return 0;
12 }

(欢迎大家去我论坛学习:C++奋斗乐园: www.cppleyuan (dot) com)

二.对于string类
方法一:getline(cin, str)

这说明这里的getline不是类方法。

1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4  
 5 int main()
 6 {
 7     string str;
 8     getline(cin, str);
 9     cout << str << endl;
10     return 0;
11 }

时间: 2024-11-02 21:47:44

转:C++输入一行字符串的一点小结的相关文章

C++输入一行字符串的一点小结

C++输入一行字符串的一点小结 原文链接: http://www.wutianqi.com/?p=1181 大家在学习C++编程时,一般在输入方面都是使用的cin. 而cin是使用空白(空格,制表符和换行符)来定字符串的界的. 这就导致了对于带有空格的字符串,比如"I Love C++奋斗乐园论坛" 只能读入"I",后面的都无法读入. 这时怎么办?  一.对于字符数组: 方法一:getline() 读入整行数据,它使用回车键输入的换行符来确定输入结尾. 调用方法:

c++ 输入一行字符串

char str1[50]; //cin>>str1; 方式1 不能统计(录入)空格后的字符 cin.get(str1,50); //方式2 能统计空格后输入的字符 按回车键输入结束 get()会将换行符保存在序列里 //cin.getline(str1,50); //方式3 能统计空格后输入的字符 按回车键输入结束 getline()不会将换行符保存在序列里 //cout<<strlen(str1)<<endl; //cout<<sizeof(str1)&

从键盘上输入一行字符串,统计单词个数

#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>int main(){char str[100]={'\0'};int count,i,len;while(fgets(str,sizeof(str),stdin)!=NULL) //fgets的用法{count=0;len=strlen(str);for(i=0;i<len;i++){if(isalpha(str

C++输入一行字符串 getline/get/getline

getline() :对于字符数组读入整行数据,它使用回车键输入的换行符来确定输入结尾.getline()将丢弃换行符.调用方法: cin.getline(str, len);第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数. 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 char str[30]; 7 cin.getline(str, 30); 8 cout << s

输入一行字符串,输出相应的行数

#include <stdio.h> int main() {  int ch = 0;  int line = 1;  int flag = 1;  while ((ch = getchar()) != EOF)  {   if (flag)   {    printf("%d", line);    line++;       flag = 0;   }     if (ch == '\n')   {    flag = 1;    }   putchar(ch);  

华为OJ——输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数

题目描述 输入一行字符,分别统计出包含英文字母.空格.数字和其它字符的个数. 输入描述: 输入一行字符串,可以有空格 输出描述: 统计其中英文字符,空格字符,数字字符,其他字符的个数 输入例子: 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][ 输出例子: 26 3 10 12 <span style="font-size:18px;">import java.util.*; public class Main { pu

输出一行字符串中的单词

#include <stdio.h> #include <stdlib.h> /* 输入一行字符串(单词和若干空格), 输出该行单词(每个单词一行) */ int main(){ char chs[100]; gets(chs); int hasWord = 0; //在之前有单词 for (int i = 0; chs[i] != '\0'; ++i){ if (chs[i] != ' '){ //若不为空格,直接输出 printf("%c", chs[i])

字符串控制台输入及字符串比较

描述茵茵很喜欢研究车牌号码,从车牌号码上可以看出号码注册的早晚,据研究发现,车牌号码是按字典序发放的,现在她收集了很多车牌号码,请你设计程序帮她判断注册较早的号码.车牌号码由5个字母或数字组成 首先解决输入的问题:先输入一个数字,表示输入的字符串个数,我们接下来再用字符串数组接受输入. Scanner scanner=new Scanner(System.in); Scanner是JDK提供的java.util工具包下的一个类,此类为我们提供了很多可用的方法. scanner扫描器可以用作控制台

java习题:倒序输出一行字符串

倒序输出一行字符串: public static void main(String[] args) { System.out.println("请输入一行字符串(按Enter执行):"); Scanner input = new Scanner(System.in); String str = input.next(); daoxu(str); } /** * 将字符串倒序 * @param str */ public static void daoxu(String str) { S