1.简介
在C++中,有两个getline 函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与istream& getline ( istream& is, string& str );另一个则是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );注意第二个getline是将读取的字符串存储在char数组中而不可以将该参数声明为string类型。
2.在string 类的getline() 函数用法
#include <string>
①作用:
当用cin输入一个字符串时,读取到空格的时候就结束一次的读取了(如果没有用for循环输入的话),因此如果要输入一个带空格的字符串,并且将其赋值到一个字符串变量里的话,就只能用getline(cin,string)
②具体用法如下:
https://www.cnblogs.com/wkfvawl/p/11040760.html
易错点:
https://jingyan.baidu.com/article/09ea3ede5fd932c0aede393f.html
3.在istream类的getline()用法
#include <istream>
istream::getline() 函数
①原型:istream& getline (char* s, streamsize n, char delim )
提取一行的字符串,s 是存储数据的变量的名字,n为输入数据的长度,delim为结束的标志字符(遇到就结束,不理会数据有多长,可以不要)
**②作用:**可以读取输入的一行字符串,并且能读入空格字符,然后将其一个一个字符的存入到字符数组中
char name[256];
cout << "Please, enter your name: ";
cin.getline (name,256);
cout << "Hell0, " << name;
如果是读取文件的还可以
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main()
{
ifstream fin("data.txt");
const int LINE_LENGTH = 100;
char str[LINE_LENGTH];
int count = 0;
while (fin.getline(str, LINE_LENGTH)) // 逐行读取, 将行读入字符数组,遇到回车键结束一次读取,但是此时返回while的还不是0,当getline 读取到文件的最后一个数据读完了,然后读到空白符的时候,返回while 就是0了,所以中止while.第二个参数是指每行不超过这么多字符,
{
cout << "Read from file: " << str << endl;//输出字符数组的数据,最后换行
count++;
}
cout << count << endl;
return 0;
}
注意!
①cin.getline()与getline()是不同的, getline()是在string 头文件里的,其的原型是istream& getline ( istream &is , string &str , char delim ),使用前必须包含头文件,其使用例子如下(同样,delim可不写,则默认为回车结束):
②当要读取一行的空格区分的字符串时,并且要一个一个读取并且存入字符串数组里时,直接用cin就好了
#include <iostream>
using namespace std;
int main()
{
char a[10];
for(int i=0;i<=9;i++)
{
cin>>a[i];
}
for(int j=0;j<=9;j++)
{
cout<<a[j]<<" ";
}
return 0;
}