首页 > 解决方案 > 从 .csv 文件中读取

问题描述

我正在尝试将变量保存在 .csv 文件中,即使在关闭程序然后再次打开以从 .csv 读取它们时,变量在关闭后也不会重置。$balance工作正常,但$leveland的$cases值每次都是 1。它们保存在 .csv 中,但我无法读取它们。

#include <iostream>
#include <random>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <sstream>
using namespace std;

int main() {
  int $balance = 0, $new_balance, $bet_amount, $random_number, $multiplies, $number_type_number, case_opening;
  int $level = 1, $cases = 1, $xp = 0;
  int $input_balance = 0, $input_level = 1, $input_cases = 1;
  string $free_coins, $bet_type, $number_type_color, $number_type_odd_even, $number_type_row, $bet_type_color;
  string $bet_type_halves, $bet_type_third, $bet_type_row;
  string $roll_again;
  ofstream myFile;
  ifstream inputFile;
  string line, line1, line2;

  /*Useless Code*/

  inputFile.open("database.txt");

  while (getline(inputFile, line)) {
    istringstream ss(line);
    ss >> $input_balance;
    $balance = $input_balance;  
  }

  while (getline(inputFile, line1)) {
    istringstream ss1(line1);
    ss1 >> $input_level;
    $level = $input_level;
  }

  while (getline(inputFile, line2)) {
    istringstream ss2(line2);
    ss2 >> $input_cases;
    $cases = $input_cases;
  }
    
  do {
   /*More Useless Code*/
   myFile.open("database.txt");
   myFile << $balance << "\t" << $level << "\t" << $cases;
   myFile.close();
  } while($roll_again == "yes" || $roll_again == "y" || $roll_again == "Yes" || $roll_again == "Y");
}

标签: c++

解决方案


  1. 您不检查open()调用是否成功。
  2. inputFile在写入之前不要关闭myFile。你怎么知道当文件已经打开读取时写入文件会起作用?
  3. 你为什么使用while (getline(inputFile, line)). 那没有意义。每行的值都将分配给$balance.
  4. 您正在将制表符 ( "\t") 而不是换行符 ( "\n") 写入文件,因此所有三个值都将位于一行。
  5. 如果 $roll_again 是 y,Y,yes 或 Yes,您的最终循环将永远不会退出。但是你从来没有给 $roll_again 赋值过,为什么要循环呢?

推荐阅读