精华内容
下载资源
问答
  • c++读入带空格字符串

    2020-04-03 21:26:27
    scanf("% [^\n] ", &x); [^x] 遇到x符号时停止读入

    scanf("% [^\n] ", &x);

    [^x] 遇到x符号时停止读入。

    展开全文
  • ```cpp #include <iostream> #include <cstdio> #include <math.h> //#include <string>... //怎么输入带空格字符串 char str1[100],str2[100]; int n; string ss; //cin>.
    
    ```cpp
    #include <iostream>
    #include <cstdio>
    #include <math.h>
    //#include <string>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        //怎么输入带空格的字符串
        char str1[100],str2[100];
        int n;
        string ss;
        //cin>>str1;
        //puts(str1);
        //scanf("%s",str2);
        //puts(str2);
        //普通的scanf和cin均不能输入带空格的字符串
        //下面开始寻求其他函数解决这个问题
        getline(cin,ss);
        //istream& getline(ss,n);
        //puts(ss);
        //cin.get  和cin.getline的用法和区别
        //难道只能输入一行,遇到空格符号就结束
        cout<<ss<<endl;
        cin.get(str1,50);
        cin.getline(str2,50);
        puts(str1);
        puts(str2);
        
        return 0;
    }
    
    
    
    展开全文
  • ,a),但因为cin和scanf()默认读到空格、\t、\n就停止,所以并不能读入带空格的字符串,这就让人在一些必须获取带空格字符串时很头大。上网查了以后发现用以下两种方法完美解决: 一、使用gets()函数 gets()可以...

    目前常用的读入字符串方法是使用cin>>a或scanf("%s",a),但因为cin和scanf()默认读到空格、\t、\n就停止,所以并不能读入带空格的字符串,这就让人在一些必须获取带空格字符串时很头大。上网查了以后发现用以下两种方法完美解决:

    一、使用gets()函数

    gets()可以说是一个相当强大的获取字符串函数(就目前我的认知来看==),

    使用方法是    gets(数组名或指针)      成功时返回读入的字符串的指针,失败时返回NULL,因此也能用gets(str)!=NULL来完成与scanf("%s",str)!=EOF一样的功能。

    gets()最大的好处是可以读入空格、\t和\n,并把\n作为结束的标志,读入到\n之前字符串
     

    //请无视下面这段话,问题已解决,只是因为很有趣所以才保留这段话
    
    /*(这里有存疑,参考blog上写的是“可接受回车键之前输入的所有字符,
    并用'\n'替代 '\0'”,难道说是把最后的\0用\n替代?还是说把字符串中
    间的\0当做\n?至少经过试验cb证明前一种说法不正确,但后一种说法很
    蛋疼啊,每个字符串的截止字符不都是\0吗?姑且先持怀疑态度吧==)*/

    二、将scanf("%s",str)中的%s替换为%[^\n]

    参数"%[^n]"意为“一直读入,直到读到\n停止”,也就是说将默认的“读到空格、\n、\t停止”改成了“读到\n停止”,这就意味着能读入空格和\t啦!

    (然而悲催的是,在cb中使用好像不能成功,程序一直读入字符串,不知道是我用错了还是怎么回事==,改天再试试)

    //注意!!!以下全是现学现卖,因为还没实践所以基本是靠着自己的猜想写,很可能有差错,请谨慎阅读(最好别看==)

    关于%[]的用法:

    []叫转换说明符

    %[]表示仅读入[]内的字符,也就是说只要读到[]之外的字符立刻停止读入

    举例:

    scanf("%[123]",str);

    输入1221231234123

    那么在读到4时就停止读入,str接收的是122123123

    而上面用的是%[^\n],^叫抑扬符,加了^后[]内的意思就恰好相反,也就是读到[]之内的字符立刻停止输入

    举例:

    scanf("%[^123]",str);

    还是输入1221231234123,str一个字符也接收不到,因为第一字符'1'就属于"123"中的一个==

    参考:

    字符串处理之gets与scanf("%s")的区别 (注意这篇有个笔误,“可接受回车键之前输入的所有字符,
    并用'\n'替代 '\0'”中\n和\0的位置反了,坑了我好久orz)

    scanf/fscanf 的%[]和%n使用方法

    展开全文
  • 先用cin读入整数,再用getline读入带空格长度未知的字符串时,字符串无法读入。 解决方法:加入cin.ignore(); int main() { int n, m; cin >> n >> m; cin.ignore(); string t; getline(cin, t); ...

    先用cin读入整数,再用getline读入带空格长度未知的字符串时,字符串无法读入。

    解决方法:加入cin.ignore();

    int main()
    {
        int n, m;
    
        cin >> n >> m;
        cin.ignore();
    
        string t;
        getline(cin, t);
    
    
    
          return 0;
    
    }

    原因:当使用 cin 读取了一个整数后,会在输入缓冲区中留下一个换行符,接下来在调用两个参数的 getline() 读取时,遇到上次 cin 留下来的换行符,即停止读取,因此下面的程序中,无论输入什么内容,调用 getline() 后,字符串变量的值都为空。

    参考链接:https://www.techforgeek.info/trap_of_mix_use_cin_and_getline.html

    展开全文
  • c++读取带空格字符串

    千次阅读 2018-10-08 19:27:55
    关于在C++字符串的输入整理笔记 cin cin是C++中最常用的输入语句,当遇到空格或者回车键即停止 如: #include #include using namespace std; int main() { chara[50]; cin&amp;gt;&amp;gt;a; cout&...
  • cin遇空格即停止 对于string类型,可使用 getline(cin,str); 对于字符型数组,可使用 ①scanf("%[^\n]",chs); ②cin.get(chs,max_num); ③cin.getline(str,max_num); 01 scanf函数 头文件#include <stdio.h>...
  • C/C++ 读入一行字符串

    千次阅读 2016-04-03 12:12:19
    C/C++ 读入一行字符串标签(空格分隔): 常用代码积累1.getsgets函数的头文件是#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int size = 1024; char* buff = (char*)malloc...
  • 好久之前遇到 gets()不准用的情况,所以稍稍参考了一下网上的方法,整理一下。  char st[maxn]; string s; 1、gets(st); 2、scanf("%[^\n]",st); 3、getline( cin, s); // 这里s是 string ... ...
  • c++ 读入一行字符串(包括空格

    千次阅读 2020-02-09 20:18:07
    一、 gets #include <cstdio> #include <iostream> using namespace std; int main() { char s[1000]; gets(s); cout <<...若在gets上面有整数输入,那么必须再写一次gets(...
  • 在处理输入的时候,有时需要输入一整行字符串,而字符串中包含类似空格,tab这样的特殊符号,直接用cin读入时不能得到预期效果,这里介绍一下C++中的整行字符串读入方法。istream&amp; getline (istream&amp...
  • C++带空格的字符数组和字符串的输入很简单,就记好两个输入方式就行!!! 很简单,就记好两个输入方式就行!!! 一、要输入字符串数组的话就用scanf的正则表达式 char str[100]; scanf("%[^\n]", str); //遇到回车...
  • while 那里会循环11次,每读入一次就是读入一行/以空格分隔的一个字符串; 将同一根目录下文件名为movie_information.txt的文件打开,将里面的内容一行行赋值给in后的变量。 //读入信息 ifstream in("movie_...
  • 带空格字符串 1.字符串string类 string str; getline(cin,str); 2.字符数组 方法一:cin.getline(str,len) char a[100]; cin.getline(a,100); 第一个参数是要输入的字符数组,第二个是输入的最大长度,输入的...
  • 关于C++读取带空格字符串的方法,你知道哪些呢? 1. cin cin是C++中最常用的输入语句,当遇到空格或者回车键即停止 如: #include <iostream> #include <string> using namespace std; int main...
  • #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(){ char c; char arr[100]; cin>>c; char h = getchar();... //printf("%d\n",h)...
  • 由于C++中这一个知识点的欠缺,导致自己在某场程序测式中没有通过,现在决定把能找到的读入包含空格的方法总结出来。 一、gets() 首先是标准输入输出中的gets()方法,以回车键结束。(补充:在C++11中已删除) #...
  • C++ 读取一行带空格字符串

    千次阅读 2018-09-30 19:08:03
    关于在C++字符串的输入整理笔记 1. cin cin是C++中最常用的输入语句,当遇到空格或者回车键即停止 如: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int ...
  • C/C++读入多行字符串string

    万次阅读 多人点赞 2016-09-30 14:11:00
    1. 读入不含空格字符串 首先我要介绍一下标准C++字符串类string,它包含在”string”头文件中,记住不是string.h或者cstring头文件。两者头文件中都是包含对字符串数组处理的函数声明,前者标准C语言头文件,而后者...
  • 原文见链接c语言中怎样用scanf()读入带空格字符串 原文见链接c++输入(空格)
  • scanf("%s, str)默认回车和空格作为组输入间隔或结束符号 ...当输入字符串时,字符“c”将被当作当前输入的结束符 char str[50]; scanf("%[^\n]", str); //\n作为字符串输入结束符 printf("%s", str); ...
  • 字符串带空格读入在某些场合用的很多,题主总结了三中比较好用的方法: ①、sring类型不能读取空格,但是getline(cin,string)可以,字符串以回车“\n”结束读取。 ②、C语言中,常使用gets(str),同样以回车...
  • C/C++带空格字符串的输入

    万次阅读 多人点赞 2017-04-27 21:33:49
    带空格字符串输入

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,402
精华内容 7,760
关键字:

c++读入带空格的字符串

c++ 订阅