使用getline函数提取字符串数据,并使用ofstream函数将每一行写入单独的文件

时间:2015-02-14 17:54:11

标签: c++ c

以txt格式存储的输入文件有点像:

data1 : 15 16 20 23 56
data2 : 15 65 89 64 65

所以,我将每一行提取成字符串格式为单独的文件,如下所示

宏定义:

    #define STRINGIFY_INIT(x)  #x
    #define STRINGIFY(x)  STRINGIFY_INIT(x)

    #define FILE_PREFIX   data
    #define FILE_EXT      .txt

    #define CONCAT_FILE(a) STRINGIFY(FILE_PREFIX) STRINGIFY(a) STRINGIFY(FILE_EXT)

代码启动如下:

    std::string line;

    std::ifstream readfile;
    readfile.open("read.txt");

    while(getline(readfile,line)){
      int x = 1;
      std::ofstream outputFile( CONCAT_FILE(x) );
      outputFile << line <<std::endl;
      std::cout<<line<<std::endl;
      x++;
    }

现在,此代码创建名为&#34; datax.txt&#34;的文件。并且在文本文件中,它是输入文件中最后提取的数据.i.e,

data2 : 15 65 89 64 65

但是,我的要求是创建名为data1.txt和data2.txt的2个文件,因为原始输入文件中存在2行数据。

我遇到的问题在于:

    std::ofstream outputFile( CONCAT_FILE(x) );

表达式&#34; CONCAT_FILE(x)&#34;,没有取x的值,但它只是取ASCII字符&#34; x&#34; .So,一个带有名字的文件&#34; datax.txt&#34;已创建,而不是&#34; data1.txt&#34;,&#34; data2.txt&#34;。

我希望在第一次迭代时使用CONCAT_FILE(1),在下一次迭代时使用CONCAT_FILE(2),这样2个文件&#34; data1.txt&#34;,&#34; data2.txt&# 34;是创造的。

任何人都可以帮助我。

我需要创建2个单独的文件,这样我才能分别只读取整数值并想要计算每个文件的均值。

请做必要的。 谢谢,

0 个答案:

没有答案