如何在输出文件中创建行?

时间:2016-04-04 02:50:59

标签: c++ loops ofstream

我目前有这个代码,并且所有格式都是正确的......我似乎无法在输出文本文件中创建行...我该怎么做?我已尝试在函数和main()中执行for循环,但如果我这样做似乎不起作用,所以我现在很困惑。

package foo.conf

package object conf {

  case object Provider {
    sealed trait Type {
      def name: String
      override def toString = name
    }

    sealed trait MyProvider extends Type {
      val name = "MyProvider"
    }
  }

  import Provider._

  case class Provider[T <: Type](config: Config[T])

  case object Config {

    sealed trait Attribute[T <: Type, VT] {
      def name: String
      def value: VT
      override def toString = name
    }

    final case class AttributeKey[T <: Attribute](name: String)
    case object AttributeKey {
      implicit def attributeToKey[T <: Attribute](a: T): AttributeKey[T] = AttributeKey(a.name)
    }


    final case class AttributeValue[VT, T: Attribute[_, VT]](value: VT)
    case object AttributeValue {
      implicit def attributeToValue[T](a: Attribute[_, T]): AttributeValue[T] = AttributeValue(a.value)
    }


    case class MyProviderSpecificAttr[T: String](value: T) extends Attribute[MyProvider, T] {
      val name = "my-provider-specific-attr"
    }

    case object `my-provider-specific-attr-val-1` extends MyProviderSpecificAttr("my-provider-specific-attr-val-1")
    case object `my-provider-specific-attr-val-2` extends MyProviderSpecificAttr("my-provider-specific-attr-val-2")
  }

  import Config._
  final case class Config[T <: Type](c: Map[AttributeKey[Attribute[T, _]], AttributeValue])

  val test = Config[MyProvider](Map(
    MyProviderSpecificAttr -> `my-provider-specific-attr-val-1`
  ))



}

2 个答案:

答案 0 :(得分:2)

每次编写文件时都不会附加文件截断并创建新文件,添加附加标记并将文件打开为。

flight.open("flightdata.dat", ios_base::app);

答案 1 :(得分:1)

您在main中使用未初始化的变量。无论如何,他们没有任何目的。从main删除变量声明并将其放入output

void output()
{
    string flightnumber;
    int arrival1, arrival2, realarrival1, realarrival2;
    char dummy1, dummy2;

    ofstream flight;
    flight.open("c:\\test\\___flightdata.txt", ios::app);
    ...
}

int main()
{
    output();
    return 0;
}

您可能希望添加ios::app标记,如另一个答案中所指出的那样。