如何使用c ++创建多个文件

时间:2016-12-05 11:06:33

标签: c++ multiple-files

使用c ++中的for循环创建多个文件。

目标: - 在名为 1.txt 2.txt 3的相应文件夹中创建多个文件。 TXT

以下是我的示例代码:

int co = 3;
for (int i = 1; i <= co; i++)
{   
    ofstream file;
    file.open (i+".txt");
    file.close();
}

此代码创建三个文件:t,xt和txt。

此代码中发生了什么?和 我的代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

您需要将i转换为字符串才能使用operator+将其连接起来,否则您将无意中执行pointer arithmetic

// C++11
#include <fstream>
#include <string>     // to use std::string, std::to_string() and "+" operator acting on strings 

int co = 3;
for (int i = 1; i <= co; i++)
{   
    ofstream file;
    file.open (std::to_string(i) + ".txt");
    file.close();
}

如果您无权访问C ++ 11 (或者如果您想避免明确“转换i然后连接”),则可以使用std::ostringstream

// C++03
#include <fstream>
#include <sstream>

std::ostringstream oss;
int co = 3;
for (int i = 1; i <= co; i++)
{   
    ofstream file;

    oss << i << ".txt"; // `i` is automatically converted
    file.open (oss.str()); 
    oss.str(""); // clear `oss`

    file.close();
}

注意: clang ++ 使用-Wstring-plus-int警告标记wandbox example捕获此错误。

答案 1 :(得分:1)

在C ++中,你不能简单地#34;连接&#34;带整数的字符串文字。字符串文字将分解为指向常量char(char const *)的指针,并且指针算术规则适用。

当从指针添加或减去整数值时,结果是一个指向对象的指针,该对象是内存中进一步的元素数量 - 当然,只有当内存的边界没有交叉时,这才会成立

答案 2 :(得分:0)

您必须先将i转换为std::string

int co = 3;
for (int i = 1; i <= co; i++){   
    ofstream file;
    file.open (std::to_string(i) + ".txt"); //Here
    file.close();
}