zoukankan      html  css  js  c++  java
  • C++cin处理空格问题

    仔细分析下面程序

     #include<iostream>
    using namespace std;
    #include<string>

    int main()
    {
    string str="jack bullshit jack";

    {
    string bullshit="bullshit";
    string bush="bush";
    size_t pos=str.find(bullshit,0);
    size_t length=8;
    if(pos!=string::npos)
    str.replace(pos,length,bush);
    cout<<str;
    }
    }

    结果为jack    bush          jack; 结果正确,但想要用cin输入字符串时,结果却令你想的不一样:

    #include<iostream>
    using namespace std;
    #include<string>

    int main()
    {
    string str;
    while(cin>>str)

    {
    string bullshit="bullshit";
    string bush="bush";
    size_t pos=str.find(bullshit,0);
    size_t length=8;
    if(pos!=string::npos)
    str.replace(pos,length,bush);
    cout<<str;
    }
    }

    输入jack    bullshit  jack

    结果jackbushjack,为什么空格不见了?

    cin接收输入时,:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等);从第一个非空白符开始读,知道空白符或文件结束为止

    如果程序如下:

    int main()
    {
    string str;
    while(cin>>noskipws>>str)

    {

    cout<<str;

    }
    }


    input : jack      bullshit          bull

    output:jack press any key to continue;是不会循环的。

    怎么才能接受一个带空格的字符串???

    可以用getline:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string sLine;
    getline(cin,sLine);
    cout << "your string is:\m" << sLine << endl;
    }

    input:  jack      bullshit        jack        ^z(ctrl+z);

    output:jack              bullshit                        jack        会保留空格

    、cin.getline()   // 接受一个字符串,可以接收空格并输出

    #include <iostream>
    using namespace std;
    main ()
    {
    char m[20];
    cin.getline(m,5);
    cout<<m<<endl;
    }

    输入:jkljkljkl
    输出:jklj

    接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;


     

  • 相关阅读:
    在C#程序设计中使用Win32类库
    Quartz.Net学习笔记(一)
    XDView网络视频监控
    Quartz.Net学习笔记(二) Jobs And Triggers
    关于web.config中<customErrors>节点说明
    业余水准,给朋友设计的LOGO
    JS 获取浏览器、显示器 窗体等宽度和高度【转载】
    Quartz.Net学习笔记(三) Jobs And Triggers再深入
    自己asp.net项目错误处理机制
    asp.net错误处理机制
  • 原文地址:https://www.cnblogs.com/youxin/p/2410730.html
Copyright © 2011-2022 走看看