C/C++带有空格的字符串输入

一、带有空格的字符串输入

(一)C++篇

1. 针对字符数组而言

  • 方法一 getline()
    读入整行数据,使用回车键输入换行符来确定输入结尾。
    调用方法:
cin.getline(str,len)

第一个参数存储输入行的数组名称
第二个参数是要读取的字符数

举个栗子:

int main()
{
    char str[100];
    cin.getline(str,111);
    cout<<str<<endl;
    return 0;
}
  • 方法2 cin.get(str,len)
    举个栗子:
int main()
{
    char str[100];
    cin.get(str,111);
    cout<<str<<endl;
    return 0;
}

两者都是读取一行输入,直至换行符
但是,getline() 将换行符丢弃,而get()将换行符保留在输入序列中

2. 对于string类

  • 方法1 getline(cin,str)
    举个栗子:
int main()
{
    string str;
    getline(cin,str);
    cout<<str<<endl;
    return 0;
}

(二) C语言篇

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

1. 利用正则表达式

利用格式符“%[] ”它的作用扫描字符串集合。scanf("%[^c]",str);
其中”c” 是一个具体的字符常量(包括控制符)。
举个栗子:

int main()
{
   char *msg=NULL;
   msg=(char *)malloc(100*sizeof(char));
   scanf("%[^\n]",msg);
   printf("%s",msg);
    return 0;
}

2. 使用gets()函数

gets()函数是以回车符作为结束符
本函数不建议使用,因为在codeblocks已经无法使用

二、先输入一个整数后,再输入一个带空格的字符串

int i=0;
string data;
cin>>i;
cin.get();  //这应该懂吧,读取换行符,因为换行符在你按回车时还在输入队列中
getline(cin,data);  //正因为cin.get()将换行符读取了,这行代码可以读取一行,否则将直接读取换行符,这样子这一行的内容都存进data字符变量中
cout<<i<<endl<<data;
return 0;

原文链接: https://www.cnblogs.com/bryce1010/p/9386993.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C/C++带有空格的字符串输入

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/270424

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午9:14
下一篇 2023年2月14日 下午9:14

相关推荐