Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用getline函数提取字符串数据,并使用ofstream函数将每一行写入单独的文件_C++_C - Fatal编程技术网

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

C++ 使用getline函数提取字符串数据,并使用ofstream函数将每一行写入单独的文件,c++,c,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

我以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++;
    }
但是,我的要求是创建两个名为data1.txt和data2.txt的文件,因为原始输入文件中有两行数据

我遇到的问题是:

    std::ofstream outputFile( CONCAT_FILE(x) );
表达式“CONCAT_FILE(x)”没有取x的值,只是取ASCII字符“x”。因此,将创建一个名为“datax.txt”的文件,而不是“data1.txt”、“data2.txt”


我希望在第一次迭代中使用CONCAT_文件(1),在下一次迭代中使用CONCAT_文件(2),这样就创建了两个文件“data1.txt”、“data2.txt”

谁能帮我一下吗

我需要创建两个单独的文件,这样我就可以单独读取整数值,并希望计算每个整数值的平均值

请把需要的全部做完。
谢谢,

为什么要将其标记为C?问题在于宏表达式“CONCAT_FILE(x)”,我正在尝试将数字(x的值)附加到文件名。宏,我想C和C++中都是一样的。你需要一个方法把整数转换成一个字符串,用作文件名,这是很小的,可以找到解决方案。预处理器仅仅是一个文本替换工具,它甚至不知道诸如
int
float
之类的类型。我希望在第一次迭代中使用CONCAT_文件(1),在下一次迭代中使用CONCAT_文件(2),这样就可以创建两个文件“data1.txt”,“data2.txt”。去掉所有这些宏并使用。那么你的代码就可以工作了。宏用于编译时文本替换–它们不能在运行时使用变量的值。
    std::ofstream outputFile( CONCAT_FILE(x) );