文件读取的一些小知识

文件读写主要涉及到几个函数和 << >>操作符。

在这里进行简单的总结下:

首先说一下文件读写是分为ASCII 和二进制读写,由于我没用到二进制的读写,在这里主要总结下ASCII的读写。文件读写主要是想编译器的数据流中读入和从中读出数据。即fstream。对于一些理论和其中关联这里不再说明,主要说一下实例用法。

1. 首先说从文件中读取汉字,汉字和英文单词的不同是汉字是两个字符,所以如果读的话,就需要创建一个string的容器。把没两个char类型的字符放入一个字符串中然后再将该字符串放入容器中,则容器中的每个元素都是双字符的字符串(即一个汉字)。这样就涉及到怎么从一些有单词和汉字的文件中选出汉字的字符,经查汉字的两个字符都是负数,即判断字符小于0。如例子:

int _tmain(int argc, _TCHAR* argv[])
{
 fstream file("d:\\file.txt");
 if (!file)return 0;
 char ch;
 string str;
 vector<string> vec;
 while (!file.eof())
 {

  file.get(ch);
  if (ch<0)
  {
   str.push_back(ch);
   if (2 == str.size())
   {
    vec.push_back(str);
    str.clear();
   }
  }
 }
 long int Number;
 cout << "请输入一个数字:" <<endl;
 cin >> Number;
 int count = Number;
 int index = 0;
 int Number2 = 1;
 while (count)
 {
  count = count/10;
  index++;
 }
 cout << "转换中...." <<endl;
 Sleep(500);
 for (int j=0; j!=index; j++)
 {
  for (int i=0; i!=index-j-1; i++)
  {
   Number2 *= 10;
  }
  cout << vec[Number/Number2];
  if (j != index-1)
  {
   cout << vec[8+index-j];
  } 
  Number = Number%Number2;
  Number2 = 1;
 }

 cout << endl;
 cout << index << "位数" <<endl;

 system("pause");
 return 0;
}

“零o壹o贰afafo叁o肆o伍o陆o柒oafafaaafafaf捌o玖o拾o佰o仟o万o拾o佰o仟o亿” 文件中的内容。

2.get 函数和getline函数

char ch[100] = {};

char ch1;

inFile.get(ch,3); get的这个函数是向ch数组中读入字符,虽然写的是读入3个字符,但是实际读入的只有两个,系统会在ch末尾自动添加'\0'。另外该函数不读换行符,当读到'\n'是会阻塞,不能继续读取,此时需要使用一些函数如get(ch1)读取换行符或跳过该字符get()。

inFile.getline(吃,100)读取一段文字中的100个。如果该段文字大小小于100则,终止。如果一段文字大于100,则当读取到100时会中止,卡在这里不能继续读取;可以通过inFile.clear()函数清空输入流来使文件继续读取。

getline(inFile,str);向字符串中读入数据,没有换行符的限制,不必规定大小。每次读取一段,读取换行符。

3.<<  >>操作符的使用

inFile>> str1 >> str2 >> str3;

>>  遇到空格会终止,即一行如果有三个用空格分开字符串可将该三个字符串分别放入str1、str2、str3中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值