fstream

C++: Using ifstream with getline();

女生的网名这么多〃 提交于 2020-05-09 19:17:25
问题 Check this program ifstream filein("Hey.txt"); filein.getline(line,99); cout<<line<<endl; filein.getline(line,99); cout<<line<<endl; filein.close(); The file Hey.txt has alot of characters in it. Well over a 1000 But my question is Why in the second time i try to print line. It doesnt get print? 回答1: According to the C++ reference (here) getline sets the ios::fail when count-1 characters have been extracted. You would have to call filein.clear(); in between the getline() calls. 回答2: The

delphi 调用百度识别

混江龙づ霸主 提交于 2020-04-07 02:19:48
虽然百度大家一直在骂,但是我发现其实百度有些东西还是可以用的。现在大家都搞人工智能了,我们Delphi也不可以落后。废话不多说,直接上代码 第一步,先获取AccessToken function GetAccessToken(const client_id, client_secret: string; HTTP: TNetHTTPClient;out access_token,expires_in,error:String):Boolean; var URL:String; cParam:TStringList; FJson:TJsonObject; S:string; begin URL:='https://aip.baidubce.com/oauth/2.0/token'; cParam:=TStringList.Create; cParam.Add('grant_type=client_credentials'); cParam.Add('client_id='+client_id); cParam.Add('client_secret='+client_secret); try s:=HTTP.Post(URL,cParam).ContentAsString; FJson:=TJSONObject.ParseJSONValue(s) as TJSONObject;

C++程序设计POJ》《WEEK7 输入输出和模板》《二进制文件读写》《模板》《类模板与派生》

与世无争的帅哥 提交于 2020-04-04 00:44:19
二进制读文件 ifstream fstream 读 ofstream fstream 写 inFile.gcount();//看刚才读了多少个字节 比如快到文件末尾,如果最后只剩8个字节,却要读10个字节,最后只会读8个字节 fstream东西比较全 ‘\0’ 为什么存成.dat格式?比纯文本节省空间,空格也占空间,纯文本是字符串格式 10亿,10个字节,.dat 一个int 4个字节搞定 Jane 本来后面就有个\0 Mike 内存缓冲区 二进制文件和文本文件的区别 二进制读文件 ifstream 和 fstream 的成员函数: istream& read (char* s, long n) 将文件读指针指向的地方的 n 个字节内容,读入到内存地址 s ,然 后将文件读指针向后移动 n 字节 以 ios ::in 方式打开文件时,文件读指 针开始指向文件 开头 。 二进制写文件: ofstream 和 fstream 的成员函数: istream& write (const char* s, long n); 将内存地址 s 处的 n 个字节内容,写入到文件中写指针指向的位置, 然后将文件写指针向后移动 n 字节 以 ios::out 方式打开文件时,文 件写指针开始指向文件开头 , 以 ios::app 方式打开文件时,文件写 指针开始指向文件尾部 。 /* 二进制文件读写

C++文件读写详解

回眸只為那壹抹淺笑 提交于 2020-04-04 00:07:10
转自: http://blog.csdn.net/kingstar158/article/details/6859379 在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: 1 #include <fstream> 2 2.ofstream //文件写操作 内存写入存储设备 3 3.ifstream //文件读操作,存储设备读区到内存中 4 4.fstream //读写操作,对打开的文件可进行读写操作 1.打开文件 在fstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作 函数:open() 1 <span style='font-family: "Times New Roman"; font-size: 16px;'> 2 public member function 3 4 void open ( const char * filename, 5 ios_base::openmode mode = ios_base::in | ios_base::out ); 6 7 void open(const wchar_t *

ifstream文件尾最后一行读两次

邮差的信 提交于 2020-03-11 21:52:31
看下面一段代码: ifstream m_fileConfig; string str; m_fileConfig.open(FILE_OPERATORS, ios::out); while(! m_fileConfig.eof() ){ m_fileConfig >> str; cout << str << endl; } 打印结果 FILE_OPERATORS 中的最后一条总被多读了一次。 。。 原因分析 eof()没有问题 当你的文件指针到达文件末尾时 执行feof不会返回 1 要到下一次读取才会返回。 在读取最后一个之后, 虽然到了末尾 但是feof(fp)还是返回0 直到ch=fgetc(fp); //文件结束后再读了一次 然后的eof才返回 其实最后那个数据并没有读取了两次, 只在用eof()来判断时,如果读取到了文件的数据末尾,但还没到文件的结束标识EOF, 再读取sizeof(buf))大小的数据时,fstean流的状态会标识为失败,但buf中的值没有被改变,还是保存了上一次读取的数据。 可以用下面的方法验证: while(!from.eof()) { from.read((char*)(&buf), sizeof(buf)); std::cout < < buf < < endl;//最后一次会输出0 buf = 0; } /////////////////////

Optimisation: Shrinking file size in C or C++

落爺英雄遲暮 提交于 2020-03-03 04:50:07
问题 When performing computer simulations of systems with n (e.g. 10000) particles, the usual workflow involves saving the state of the system frequently at given intervals. This would entail writing down in a file the position coordinates of all the particles (so 3 floats/doubles per line, each line for a particle), with some header information. The floating precision is set to a fixed value. The way I usually save/write down my configuration files is as follows (part of a function that creates

[c#] 断点续传下载文件[带进度条类似迅雷]

杀马特。学长 韩版系。学妹 提交于 2020-02-27 21:57:51
在.net里关于用Http下载文件,有HttpWebRequest实在是简单。通常用这个组建可以轻松为自己量身定做一个类似于迅雷的下载软件,只要你舍得花这个时间。当然,你还可以从socket方面入手,因为那个比用HTTP实现更底层,操作起来更细腻。但我们现在要说的与那无关,迅雷电驴云云,这些下载软件实在是太方便了,以至于我们看起来毫无写这方面软件的必要了。但是,这方面的资料还是必须掌握一点,在很多方面都会用得着。 当然还没说到正题,先说下实现步骤:1.监视剪切板,判断是否含有可以供下载的链接。2.建立下载任务,实时记录下载进度。 3.进度条显示进度。 先说下迅雷的下载格式: thunder://QUFodHRwOi8veGlhemFpLnpvbC5jb20uY24vZG93bi5waHA/c29mdGlkPTExNDkyOSZzdWJjYXRpZD0zNDUmc2l0ZT0xMFpa thunder://后面一连串的字符串是base64加密而成,因此,我们在下载迅雷协议格式的文件时,必须先解码成Unicode文本。 AAhttp://xiazai.zol.com.cn/down.php?softid=114929&subcatid=345&site=10ZZ 去掉 “AA” “ZZ”就是地址了。 using System.IO;//引入输入输出功能 using System.Net

C++学习笔记七-流

北战南征 提交于 2020-02-13 09:09:09
C++ 的输入/输出(input/output)由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写(IO)。还定义了其他一些类型,使 string 对象能够像文件一样操作,从而使我们无须 IO 就能实现数据与字符之间的转换。这些 IO 类型都定义了如何读写内置数据类型的值。此外,一般来说,类的设计者还可以很方便地使用 IO 标准库设施读写自定义类的对象。类类型通常使用 IO 标准库为内置类型定义的操作符和规则来进行读写。 一、面向对象的标准库: iostream : istream 从流中读取 ostream 写到流中去 iostream 对流进行读写;从 istream 和 ostream 派生而来 fstream : ifstream 从文件中读取;由 istream 派生而来 ofstream 写到文件中去;由 ostream 派生而来 fstream 读写文件;由 iostream 派生而来 sstream : istringstream 从 string 对象中读取;由 istream 派生而来 ostringstream 写到 string 对象中去;由 ostream 派生而来 stringstream 对 string 对象进行读写;由 iostream 派生而来 二、国际字符的支持: 每一个 IO 头文件都定义了 char 和 wchar_t

C++学习笔记之输入、输出和文件

喜你入骨 提交于 2020-02-13 04:12:52
一、流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的。 缓冲区:内存的一块区域——用作文件与内存交换数据。 数据从文件中读出:文件 → 缓冲区 → 内存 将数据写入文件:内存 → 缓冲区 → 文件 为什么要使用缓冲区而不直接从文件中读取数据到内存或者直接有内存写入文件呢?我们的文件通常都存在磁盘中,程序从磁盘读取一个字符需要大量的硬件活动,速度非常慢。缓冲方法则从磁盘上读取大量信息,将这些信息存储在缓冲区,然后每次从缓冲区里读取一个字节,因为从内存中读取单个字节的速度比从硬盘上读取快很多,所以这种方法更快,也更方便。 说了这么多,只需知道缓冲方法更高效就可以了。 二、流库(stream library)介绍 使用继承的方法建立的输入输出类库,包含两个平行的基本类:streambuf和ios类,所有流类均以两者之一作为基类。 streambuf类提供对缓冲区的低级操作:设置缓冲区,对缓冲区指针操作,向缓冲区存取字符等 ios类及其派生类提供用户使用流类的接口 本文主要介绍ios,因为ios是编程中几乎必用的类,而streambuf类很少直接使用。下面图片来自网络: 三、文件打开与关闭 当程序中进行文件操作时,应加上头文件“fstream” 若要打开文件进行相应的操作,必须定义相应的流对象。如:ifstream in;

C++输入与输出(二)

只愿长相守 提交于 2020-02-13 04:12:33
6.fstream文件打开方式 ios::in 打开一个文件用于输入 ios::out 打开一个文件用于输出 ios::app 所有输出数据附加于文件的末尾 ios::ate 打开一个文件用于输出,如果文件已存在,移动到文件末尾数据可写入文件任何位置 ios::truct 如果文件已存在,丢弃文件内容(ios::out默认的方式) ios::binary 打开一个文件用于二进制输入输出 View Code #include<iostream> #include<fstream> using namespace std; int main() { fstream inout; char content[50]; inout.open("C:/score.txt",ios::out); //ios::out带覆盖的写入 inout<<"Danon 1991-01-01 100"; inout.close(); inout.open("C:/score.txt",ios::out|ios::app); //ios::app只追加,不覆盖 inout<<"Jake 1991-01-01 100"; inout.close(); inout.open("C:/score.txt",ios::in); while(!inout.eof()) { inout>>content; cout<