【问题标题】:how to get int with fstream get() in c++如何在 C++ 中使用 fstream get() 获取 int
【发布时间】:2016-04-25 03:13:59
【问题描述】:

我是 C++ 新手, 现在我要做的是创建一个文件,并将 int 值写入其中 然后我想用 get 函数获取那些 int 值!(这里返回的例外类型是 int ) 实际上这是一个索引文件,所以我要放入的都是 int 值! 但是我发现 fstream.put 和 fstream.get 都只能操作 char 值。 那么有没有人愿意帮助我,如何做我的工作。 这是我的代码

vector<int> tra1;
vector<int> tra2;
int last_capa = 0;
    for(int i=1;i<97;i++){
        output.put(tra1[i-1] * 5 + tra2[i-1] + last_capa);
        last_capa += (tra1[i-1] - 1) * 5 + tra2[i - 1];
    } 

下面是读取int的代码 这里我尝试获取一个int数来操作

vector<int> tra4
output.seekg(100);
unsigned int n = output.get() + tra4[2];

感谢您的帮助

浩然

【问题讨论】:

  • stackoverflow.com/questions/4672991/… 你必须将你正在阅读的内容从char* 转换为你想要阅读的类型。
  • 您的文件不包含“int 值”。它包含对人类来说看起来像数字的文本(按 ASCII 呈现时)。

标签: c++ file


【解决方案1】:

您可以使用 fstream 的运算符 >> 来替代 get,将文件中的值读入 int。

fstream fs("input.txt", std::fstream::in); //input file
int k;
while(fs >> k)
{
   //do something with k
}
fs.close();

【讨论】:

    【解决方案2】:

    fstream 运算符 >> 的替代方法是使用读/写。写入 int 值:

    std::ofstream f_out("my_file.txt", std::ofstream::binary);
    int n;
    f_out.write((char *) & ( n ), sizeof(n));
    

    阅读:

    std::ifstream("my_file.txt", std::ifstream::binary);
    int n;
    f_in.read((char *)&n, sizeof(n));
    

    读取第 100 个整数:

    std::ifstream("my_file.txt", std::ifstream::binary);
    f_in.seekg(100*sizeof(int), std::ios::beg);
    int n;
    f_in.read((char *)&n, sizeof(n));
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用老式的 C 方法 sprintf 将一些 int 放入字符串中,然后将字符串放入您的文件中,如下所示:

      sprintf(theNameOfYourString,"%d",n);
      

      编辑:当然,您必须将字符串 theNameOfYourString 放入文件中,sprintf 只允许您将内容放入字符串中。

      【讨论】:

      • 通常在C++ 中会重载operator&lt;&lt; 以达到相同的结果。
      • 感谢您的帮助 Roncoli。但是如果我在你的方法中这样做,我怎样才能得到 int 值呢?
      • 我不确定,但我想 get() 函数返回一个字符串。您可以对这个 String 进行操作,例如 atoi(),将 String 转换为 int。编辑:这是一个链接:cplusplus.com/reference/cstdlib/atoi
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2015-12-02
      • 1970-01-01
      • 2023-02-15
      • 2012-10-17
      相关资源
      最近更新 更多