如何消除txt文件末尾的'\ n'

时间:2010-07-15 20:38:42

标签: c++

我想消除txt文件末尾的额外'\ n'。在c / c ++中可以使用哪个函数来完成这项工作。

谢谢高级

2 个答案:

答案 0 :(得分:0)

一种方法是使用getline逐行迭代文件,以便以后保存该数据。读取每一行后,写入上一行(使用\n)。当没有更多数据可用时,不再使用\n写下最后一行。

或者寻找最终获取大小,以一些块大小的块读取数据,重写它们直到倒数第二个字符。如果最后一个字符是\n,请不要写它,否则写下来。

答案 1 :(得分:0)

执行此操作的posix方法是truncate函数。 如果使用seek或其他OS调用获取文件的长度,则可以使用truncate to 修剪文件长度的最后一个字符,而不重写整个文件。

//This RESIZES the file without the need to REWRITE the whole thing:
struct stat fileStat;
stat("Filename", &fileStat); 
status = truncate("Filename",fileStat.st_size-1);

windows等效函数是chsize,但它需要先打开一个文件:

   // Open a file 
   if( _sopen_s( &fh, "data", _O_RDWR | _O_CREAT, _SH_DENYNO,
                 _S_IREAD | _S_IWRITE ) == 0 )
   {
      if( ( result = _chsize( fh, _filelength( fh ) -1 ) ) == 0 )
         printf( "Size successfully changed\n" );
      else
         printf( "Problem in changing the size\n" );
      _close( fh );
   }