scanf()在对输入的字符串有空格会自动截取空格之前的部分
可以通过下面三个函数读取一个整行的字符串
gets(),C语言函数,接受的参数是字符数组,gets()在输入字符串时,不进行数组下标的检查
cin.getline()是一个C++函数,与gets区别是在输入的时候,会有一个长度的参数,防止数组越界可不会发生缓冲区溢出,通常与std::string一起使用
getline()也是C++里的函数,接受的一个参数是输入流,另一个是string类型的字符串。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s[100];
//scanf("%s",&s);
//gets(s);
cin.getline(s,100);
printf("%6.3s\n",s);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
// scanf("%s",&s);
// gets(s);
// cin.getline(s, 100);
getline(cin, s);//这个函数的作用是从标准输入流cin中读取一行字符串,并将其存储到变量s中。换句话说,这个函数用来读取用户输入的一行字符串并存储在s中
// printf("%6.3s", s); // 错误的输出方式
cout << s.substr(0, 6) << endl; // 正确的输出方式
//s.substr(0, 6)表示从字符串s的第一个字符开始截取长度为6的子字符串
return 0;
}
可以直接读取到std::string对象中,不需要指定长度,也可以指定一个分隔符结尾
gets、cin.getline读取的都是char * 类型的字符串
getline读取的是string类型的字符串