精华内容
下载资源
问答
  • 在c++中,对于普通常用的cin,对于包含空格的字符串显得有些无力感, 读入缓冲区中的字符是不会包含空格的, 对于想要包含空格的字符串,可以使用getline()函数; getline 从输入流读取字符并将它们放进 string : ...

    在c++中,对于普通常用的cin,对于包含空格的字符串显得有些无力感,
    读入缓冲区中的字符是不会包含空格的,
    对于想要包含空格的字符串,可以使用getline()函数;
    getline 从输入流读取字符并将它们放进 string :
    以下是getline()的用法:
    getline(input, str, input.widen(’\n’)) ,即默认分隔符是换行符。
    input - 获取数据来源的流
    str - 放置数据的目标 string
    delim - 分隔字符(默认为换行符,即上面函数中的第三个参数)

    但是使用getline()只能读入一行字符
    如下:

        #include<iostream>
        #include<bits/stdc++.h>
        #include<string>
        using namespace std;
        int main()
        {
        	int n;
        	cin>>n;
        	string s[n];
        	for(int i=0;i<n;i++)
        	{
        		getline(cin,s[i]);
        	}
        	for(int i=0;i<n;i++)
        	{
        		cout<<s[i]<<endl;	
        	} 
        	return 0;
        }
    

    这段代码,读入的字符串比输入的行数会少一行,因为输入的n后,会有一个换行符停留在缓冲区中,getline()会自动读入上面输入的数字n遗留下来的\n(即读入了一个空行),相当于多读入了一行字符串,下面的循环也会相应的执行一次

    要想实现多行输入,可以使用cin.ignore()来除掉上面的cin>>n输入时缓冲区中包含的\n即可
    如下:

    #include<iostream>
    #include<bits/stdc++.h>
    #include<string>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	cin.ignore();
    	string s[n];
    	for(int i=0;i<n;i++)
    	{
    		getline(cin,s[i]);
    	}
    	for(int i=0;i<n;i++)
    	{
    		cout<<s[i]<<endl;	
    	} 
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • next() 和 nextLine() 都可以输入一个字符串。 next() next() 不能输入“_”(空格),它以其他有效字符开始,以空格或回车结束。 例如: Scanner in = new Scanner (System.in); String s = in.next(); 在以上程序...

    用nextLine()输入

    next()和nextLine()的区别

    next() 和 nextLine() 都可以输入一个字符串。

    next()

    next() 不能输入“_”(空格),它以其他有效字符开始,以空格或回车结束。
    例如:

    Scanner in = new Scanner (System.in);
       	String s = in.next();
    

    在以上程序中,输入“空格abc空格123回车”,则s的值为“abc”。

    nextLine()

    nextLine() 可以输入“_”(空格),它可以以任何字符甚至是空字符开始,以回车结束。
    例如:

    Scanner in = new Scanner (System.in);
       	String s2 = in.nextLine();
    

    在以上程序中,输入“空格ABC空格123回车”,则s的值为“_abc_123”( _代表空格);
    输入“回车ABC”,则s的值为“”(空)。

    输入n个包含空格的字符串

    首先输入n的值,再用for循环输入n个字符串。
    注意:n后的回车会占用一次循环,所以第n个字符串输不进去。
    用以下输入为例:
    4
    123 44
    sdf1 45e
    sd 45 44
    1 2 3 4 5 6 7

    Scanner in = new Scanner (System.in);
    		int n = in.nextInt();
    		String[] str = new String[n] ; 
    		for (int i = 0 ; i < n ; i ++) {//输入
    			str[i] = in.nextLine();
    		}
    		for(int i = 0 ; i < n ; i ++) {//打印
    			System.out.println(str[i]);
    		}
    		in.close();
    

    以上程序的输出结果为:
    123 44
    sdf1 45e
    sd 45 44

    将以上程序进行修改:

    Scanner in = new Scanner (System.in);
    		int n = in.nextInt();
    		String[] str = new String[n] ; 
    		
    		in.nextLine();//吃掉n后面的回车
    		
    		for (int i = 0 ; i < n ; i ++) {//输入
    			str[i] = in.nextLine();
    		}
    		for(int i = 0 ; i < n ; i ++) {//打印
    			System.out.println(str[i]);
    		}
    		in.close();
    

    以上程序的输出结果为:
    123 44
    sdf1 45e
    sd 45 44
    1 2 3 4 5 6 7

    展开全文
  • C/C++如何输入包含空格的字符串

    万次阅读 2017-03-01 14:12:55
    对于C++字符串的输入我们看一下下面... 但我们会发现如果我们输入了还有空格的字符串,s里读入的字符串遇到空格,回车,tab都会结束,比如我们输入123 888,但实际输入到s里的只是123。如果想要输入s含有空格tab,可以

        对于C++字符串的输入我们看一下下面这段代码

           string s;      //定义空字符串

           cin >> s;    //输入字符串

           cout << s;   //打印

      但我们会发现如果我们输入了还有空格的字符串,s里读入的字符串遇到空格,回车,tab都会结束,比如我们输入123        888,但实际输入到s里的只是123。如果想要输入s含有空格tab,可以使用getline(cin,s)或者字符串拼接函数当然也可以使用字符串拼接函数。

      C输入使用scanf函数,但scanf默认回车和空格是输入不同组之间的间隔和结束符号,所以输入带空格,tab或者回车的字符串是不可以的,解决方法如下

      1)利用格式符“%[]”它的作用为扫描字符集合。Scanf(“%[^c]”,str); 其中“c”是一个具体的字符常量(包括控制字符)。当输入字符串时,字符“c”将被当作当前输入的结束符。利用此格式符就可以由编程者自己指定一个输入结束符。

    void main() 

        char* msg = NULL;

        msg = (char *)malloc(100 * sizeof(char));

        scanf("%[^\n]", msg);      // \n作为字符串输入的结束符

        printf("%s", msg);

        return 0;

    (2)使用gets函数,gets函数是以回车作为结束符

        char str[40]; 

        gets(str);


    搜索

    展开全文
  • 1.C语言中,可以用gets函数来接收输入的字符串包含空格)。 格式:gets(字符数组名); 功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符’\n’被换成’\0’存储在该数组中。 举例...

    2018-3-3

    在C/C++中,传统的输入流scanf("%s",&str) 和cin>>str,遇到空格会返回空格之前的字符串。

    1.C语言中,可以用gets函数来接收输入的字符串(包含空格)。

    格式:gets(字符数组名);

    功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符’\n’被换成’\0’存储在该数组中。

    举例说明如下:

    #include <iostream>
    #include <cstdio> 
    using namespace std;
    
    const int N = 20;
    char x[N+1]; 
    
    int main(){
    	gets(x);
    	cout<<x<<endl;
    	printf ("%s\n",x);
    	return 0;
    }
    

    注:使用gets函数时,需要包含头文件#include<stdio.h>

    2.scanf("%[^\n]]",str)

    需要包含头文件#include<stdio.h>,这种方法需要对正则表达式有一定的理解,例如:scanf("%[a-z A-Z 0-9]",str)表示只匹配输入是大小写字母和数字。
    这里应该是只能匹配带有换行符的字符串,那么我们在输入空格或者Tab键的时候我们就不停止输入,直到遇到换行符。

    #include <iostream>
    #include <cstdio> 
    using namespace std;
    
    const int N = 20;
    char x[N+1]; 
    
    int main(){
    	scanf ("%[^\n]]",x);
    	cout<<x<<endl;
    	printf ("%s\n",x);
    	return 0;
    }
    
    

    3.getline(cin,string str)

    需要包含头文件#include<string>,因为getline是string类成员对象,例如string::getline,其中第一个参数要求是输入流对象的引用&istream.

    #include <iostream>
    using namespace std;
    
    string s;
    
    int main(){
    	getline (cin,s);
    	cout<<s<<endl;
    	return 0;
    }
    
    

    如果需要转化为char*,在C++中string封装了字符串的操作,总结一下,把string转化为字符数组或指针有一下三种方式:

    (1)c_str()

          string str="hi,girls!";
          char *p=str.c_str();
    

    (2)data()

          string str="hello";
          char *p=str.data();
    

    (3)copy(p,len,start)

        string str="howareyou";
         char pStr[40];
         str.copy(pStr,7,0); //7代表复制几个字符,0代表复制的位置
         *(pStr+7)='\0';     //手动加上结束符
    

    4.cin.getline(char *str, int maxnum)

    #include <iostream>
    using namespace std;
    
    const int N = 20;
    char x[N+1];
    
    int main(){
    	cin.getline (x,N+1); //这里最好写N+1,因为字符串末尾的的'\0'也包含在这个长度之内.
    	cout<<x<<endl;
    	printf ("%s\n",x);
    	return 0;
    }
    
    

    需要包含头文件#include<iostream>,因为这里的getline是输入流的成员对象,如:istream::getline.

    http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=2&problemid=15

    给一个题目试一下,很简单的,注意要加上getchar(),否则的话就会一直循环输出。

    #include<iostream>
    #include<cstring>
    using namespace std;
    
    const int N = 255;
    int s,i;
    char x[N+1];
    
    int main(){
        while (scanf("%[^\n]]",x)!=EOF){
            getchar();
            s=0;
            if (!strcmp(x,"#")){
                break;
            }
            for (int i=0;x[i]!='\0';i++){
                if (x[i]!=' ')  s+=(x[i]-'A'+1)*(i+1);
            }
            cout<<s<<endl;
        }
        return 0;
    }
    
    展开全文
  • 使用 getline(cin,str) #include<iostream> #include<string> using namespace std; int main() { string n; getline(cin, n); cout << n << endl; cout <<...}
  • C++如何输入空格的字符串

    万次阅读 多人点赞 2018-10-09 15:38:14
    C++如何输入空格的字符串 1、scanf函数(包含头文件#include &lt;stdio.h&gt;) scanf函数一般格式为scanf(“%s”,st),但scanf默认回车和空格是输入不同组之间的间隔和结束符号,所以输入带空格,tab...
  • 由于C++中这一个知识点的欠缺,导致自己在某场程序测式中没有通过,现在决定把能找到的读入包含空格的方法总结出来。 一、gets() 首先是标准输入输出中的gets()方法,以回车键结束。(补充:在C++11中已删除) #...
  • 背景:想要在c语言中输入包含空格的一行字符串。很明显scanf("%s",str)无法实现,因为这个输入方式,遇到空格或者回车符就会停止输入。(备注:全文中出现的str都表示一个字符串数组,或者char *) 一. ...
  • 通过键盘接收用户输入的只包含字母和空格的字符串,将该字符串中的单词位置反转,单词之间用空格分割并且单词之间只有一个空格,前后没有空格。 例: 输入:hello world hello hello     &...
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。进阶:请选用 C 语言的用户尝试使 ,意思是说原地反转。输入: " hello ...
  • 最近事情有点多,问别人要了一份答案先放这,等闲下来再看看答案的缺点,写写解析...请输出排序后的字符串,每个字符串单独占一行。 #include "stdio.h" #include "string.h" int main( ) { char ss[5][100],tt[100]
  • 使用cin输入指定字符串的时,如果该字符串中不包含空格话,是不会有什么问题,但是如果包含空格话,那就不行了。 对于这种情况话,该如何解决呢? 这时候就得用到cin.get()和cin.getline() 一、当...
  • 在项目中需要验证输入的字符串是否为空,包括空格,不太喜欢使用正则,所以就想到了js的indexOf函数,indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果要检索的字符串值没有出现,则该方法...
  • 看到没有,输入的字符中可以将空格输入进入 第二种方法 scanf("%[^\n]", chStringByScanf); 很少见,所以就记录了下来 如果是 scanf("%s", chStringByScanf); 是不会将空格输入进去的
  • 1.char[]型 char buf[1000005];...多行文件输入的情况: while(cin.getline(buf,sizeof(buf)))......   2.string 型 string buf; getline(cin,buf)   3.用fgets函数 char buf[1000005]; fg...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,834
精华内容 2,733
关键字:

包含空格的字符串输入