GetLine
目录
getline功能
getline参数
getline说明
编辑本段
getline功能
getline是string类对象的成员函数,属于string IO 操作。用于读取整行文本
编辑本段
getline参数
getline(cin,str);
cin:输入流
str:string对象
编辑本段
getline说明
getline函数从输入流的下一行读取,并保存读取的内容到str中,但不包括换行符。getline 函数将 istream 参数作为返回值,和输入操作符一样也把它用作判断条件。
范例:
#include
#include
using namespace std;
int main()
{
string line;
while(getline(cin,line))
cout<
return 0;
}
结果:
输入 line1 ----回车换行
显示为空
输入 line2 ----回车换行
显示 line1
输入 line3 ----回车换行
显示 line2
----(以此类推)
getline的原型如下:
getline(char* c,int i,char c); 表示读入i个字符,或者遇到结束符c为止的字符数,保存到c中。
getline(char*,int); 表示读入i个字符到c中。注意读入的字符数应比实际的大1,因为读入的是字符串,字符串将会以'\0'作为结束,如果你要读入3个字符,那么i的值应该为4。
注意getline会读取并丢弃分界符。
后面的自已搞定,创建一个文件流类对象,然后用这个文件流来调用getline函数,比如
ifstream hy1(“hyong1.txt”)//创建hy1流,并打开文件以便读取内容。
char c[333];
hy1.getline(c,3,'0'); //表示,把hy1流关联的hyong1中3个字符或者遇到'0'的字符数读入到c中。
假设有一个叫 data.txt 的文件, 它包含以下内容:
Fry: One Jillion dollars.[Everyone gasps.]word/media/image1.gifAuctioneer: Sir, that's not a number.word/media/image1.gif数据读取, 测试 。word/media/image1.gif
以下就是基于 data.txt 的数据读取操作:
#include include #include word/media/image1.gifword/media/image1.gifusing namespace std;word/media/image1.gif//输出空行void OutPutAnEmptyLine()word/media/image2.gif{word/media/image4.gif cout<<"\n";word/media/image5.gif}word/media/image1.gif//读取方式: 逐词读取, 词之间用空格区分word/media/image1.gif//read data from the file, Word By Wordword/media/image1.gif//when used in this manner, we'll get space-delimited bits of text from the fileword/media/image1.gif//but all of the whitespace that separated words (including newlines) was lost. word/media/image1.gifvoid ReadDataFromFileWBW()word/media/image6.gifword/media/image2.gif{word/media/image4.gif ifstream fin("data.txt"); word/media/image4.gif string s; word/media/image4.gif while( fin >> s ) word/media/image8.gifword/media/image9.gif { word/media/image4.gif cout << "Read from file: " << s << endl; word/media/image10.gif }word/media/image5.gif}word/media/image1.gifword/media/image1.gif//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分word/media/image1.gif//If we were interested in preserving whitespace, word/media/image1.gif//we could read the file in Line-By-Line using the I/O getline() function.word/media/image1.gifvoid ReadDataFromFileLBLIntoChar()word/media/image6.gifword/media/image2.gif{word/media/image4.gif ifstream fin("data.txt"); word/media/image4.gif const int LINE_LENGTH = 100; word/media/image4.gif char str[LINE_LENGTH]; word/media/image4.gif while( fin.getline(str,LINE_LENGTH) )word/media/image8.gifword/media/image9.gif { word/media/image4.gif cout << "Read from file: " << str << endl;word/media/image10.gif }word/media/image5.gif}word/media/image1.gifword/media/image1.gif//读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分word/media/image1.gif//If you want to avoid reading into character arrays, word/media/image1.gif//you can use the C++ string getline() function to read lines into stringsword/media/image1.gifvoid ReadDataFromFileLBLIntoString()word/media/image6.gifword/media/image2.gif{word/media/image4.gif ifstream fin("data.txt"); word/media/image4.gif string s; word/media/image4.gif while( getline(fin,s) )word/media/image8.gifword/media/image9.gif { word/media/image4.gif cout << "Read from file: " << s << endl; word/media/image10.gif }word/media/image5.gif}word/media/image1.gifword/media/image1.gif//带错误检测的读取方式word/media/image1.gif//Simply evaluating an I/O object in a boolean context will return false word/media/image1.gif//if any errors have occurredword/media/image1.gifvoid ReadDataWithErrChecking()word/media/image6.gifword/media/image2.gif{word/media/image4.gif string filename = "dataFUNNY.txt"; word/media/image4.gif ifstream fin( filename.c_str()); word/media/image4.gif if( !fin ) word/media/image8.gifword/media/image9.gif { word/media/image4.gif cout << "Error opening " << filename << " for input" << endl; word/media/image4.gif exit(-1); word/media/image10.gif }word/media/image5.gif}word/media/image1.gifword/media/image1.gifint main()word/media/image6.gifword/media/image2.gif{word/media/image4.gif ReadDataFromFileWBW(); //逐词读入字符串 word/media/image4.gif OutPutAnEmptyLine(); //输出空行word/media/image4.gifword/media/image4.gif ReadDataFromFileLBLIntoChar(); //逐词读入字符数组word/media/image4.gif OutPutAnEmptyLine(); //输出空行word/media/image4.gifword/media/image4.gif ReadDataFromFileLBLIntoString(); //逐词读入字符串word/media/image4.gif OutPutAnEmptyLine(); //输出空行word/media/image4.gifword/media/image4.gif ReadDataWithErrChecking(); //带检测的读取word/media/image4.gif return 0;word/media/image5.gif}
输出结果为:Read from file: Fry:Read from file: OneRead from file: JillionRead from file: dollars.Read from file: [EveryoneRead from file: gasps.]Read from file: Auctioneer:Read from file: Sir,Read from file: that'sRead from file: notRead from file: aRead from file: number.Read from file: 数据读取,Read from file: 测试Read from file: 。 Read from file: Fry: One Jillion dollars.Read from file: [Everyone gasps.]Read from file: Auctioneer: Sir, that's not a number.Read from file: 数据读取, 测试 。Read from file: Fry: One Jillion dollars.Read from file: [Everyone gasps.]Read from file: Auctioneer: Sir, that's not a number.Read from file: 数据读取, 测试 。Error opening dataFUNNY.txt for inputPress any key to continue
为了您的安全,请只打开来源可靠的网址
打开网站 取消
来自
本文来源:https://www.2haoxitong.net/k/doc/a51df01cc281e53a5802ff48.html