如何在C++中获取指向下一行的文件指针?

m0rkklqb  于 2023-05-02  发布在  其他
关注(0)|答案(2)|浏览(201)

下面是我整个计划的一部分:

void filewrite(fstream &f2)
         {
            f2.seekp(0,ios::beg);
            f2.write(customerno,strlen(customerno));
            f2.seekp(24,ios::beg);
            f2.write(customername,strlen(customername));
            f2.seekp(56,ios::beg);
            f2.write(product,strlen(product));
            f2<<endl;
         }

这里f2是文件指针customerno,customername和product是字符串0,24和56是这些字符串从开始的相应位置
我面临的问题是,每次我试图写一个新记录时,它都是在写前一个记录,而不是去下一行。
我希望每个新记录都与第0、第24和第56个位置对齐。这个怎么做?先谢谢你了。

68bkxrlz

68bkxrlz1#

如果你使用这种方法,你会给自己一个具有挑战性的问题。您希望使用std::setw()为您完成此操作。
这里有一个简单得多的方法来做到这一点:

#include <fstream>
#include <iomanip>
using namespace std; 
void filewrite(ofstream &f, string customerno, string customername, string product)
{
   f << left << setw(24) << customerno << setw(32) << customername << product << endl;
}
mkh04yzy

mkh04yzy2#

我不知道,如果我得到你的问题是正确的,但如果你想确保在当前行内搜索,你可以这样做:

void filewrite(fstream &f2)
{
  long pos = f2.tellp();

  f2.seekp(pos + 0);
  f2.write(customerno,strlen(customerno));
  f2.seekp(pos + 24);
  f2.write(customername,strlen(customername));
  f2.seekp(pos + 56);
  f2.write(product,strlen(product));
  f2<<endl;
}

如果你能确保filestream在下一行的开头,那么这只会按照预期的方式工作,当函数filewrite被调用时。
否则我将是一种复杂的找到正确的位置光标在流中。

相关问题