欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-23 17:05:22
...

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

(一)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;
相关标签: 带空格字符串