c++文件操作std::ifstream

c++文件操作std::ifstream

标签: c++
  1908人阅读  评论(0)  收藏  举报
  分类:
 

C++对文件操作相关:

ifs.is_open()     判断文件是否打开

ifs.get()              获取文件的一个字符

ifs.good()          判断文件是否结束

std::ifstream::in  以只读的方式打开

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include <iostream>  
  2. #include <fstream> // std::ifstream  
  3. using namespace std;  
  4. int main(int argc, char *argv[])  
  5. {  
  6.     std::ifstream ifs("a.cpp", std::ifstream::in);//only read  
  7.     if(ifs.is_open())  
  8.     {  
  9.        std::cout<<"file is already open"<<endl;  
  10.     }  
  11.     char c = ifs.get();  
  12.     while(ifs.good())  
  13.     {  
  14.        std::cout<<c;  
  15.        c = ifs.get();  
  16.     }  
  17.     ifs.close();  
  18.     return 0;  
  19. }  


code from:http://www.cplusplus.com/reference/fstream/ifstream/ifstream/




扫描二维码关注公众号,回复: 1635323 查看本文章

std::string::find() 和 std::string::npos

  (2008-04-20 10:20:54)
标签: 

杂谈

分类: MSN搬家
- haoxg -
 
int idx = str.find("abc");
if (idx == string::npos)
  ...
 
上述代码中,idx的类型被定义为int,这是错误的,即使定义为 unsigned int 也是错的,它必须定义为 string::size_type。
 
npos 是这样定义的:
static const size_type npos = -1;
 
因为 string::size_type (由字符串配置器 allocator 定义) 描述的是 size,故需为无符号整数型别。因为缺省配置器以型别 size_t 作为 size_type,于是 -1 被转换为无符号整数型别,npos 也就成了该型别的最大无符号值。不过实际数值还是取决于型别 size_type 的实际定义。不幸的是这些最大值都不相同。事实上,(unsigned long)-1 和 (unsigned short)-1 不同(前提是两者型别大小不同)。因此,比较式 idx == string::npos 中,如果 idx 的值为-1,由于 idx 和字符串string::npos 型别不同,比较结果可能得到 false。
 
要想判断 find() 的结果是否为npos,最好的办法是直接比较:
if (str.find("abc") == string::npos) { ... }
 
(EOF)

C++对文件操作相关:

ifs.is_open()     判断文件是否打开

ifs.get()              获取文件的一个字符

ifs.good()          判断文件是否结束

std::ifstream::in  以只读的方式打开

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include <iostream>  
  2. #include <fstream> // std::ifstream  
  3. using namespace std;  
  4. int main(int argc, char *argv[])  
  5. {  
  6.     std::ifstream ifs("a.cpp", std::ifstream::in);//only read  
  7.     if(ifs.is_open())  
  8.     {  
  9.        std::cout<<"file is already open"<<endl;  
  10.     }  
  11.     char c = ifs.get();  
  12.     while(ifs.good())  
  13.     {  
  14.        std::cout<<c;  
  15.        c = ifs.get();  
  16.     }  
  17.     ifs.close();  
  18.     return 0;  
  19. }  


code from:http://www.cplusplus.com/reference/fstream/ifstream/ifstream/

猜你喜欢

转载自blog.csdn.net/zkl99999/article/details/51200464