0

我正在尝试编写一个 mpi 程序,其中每个节点都知道自己的rank,这是一个整数。

我这个程序我希望每个节点都创建一个.txt以它rank为文件名的文件。也就是说,我希望程序生成一个名为rank.txtwhere rank is an integer 的文件。

我知道如何将 an 转换intstring,但我很困惑如何将该字符串与该字符串组合.txt并将其放入文件名中。最简单的方法是什么?

提前致谢。

编辑

我已经将数字与它们结合起来.txt并将它们放入一个字符串filename中,但是当我输入时 std::ofstream out_stream(filename),编译器告诉我

no matching constructor for initialization `std::outstream`

如何将字符串放入文件名?

4

5 回答 5

2

问题是没有构造函数std::ofstream需要一个std::string. 你需要通过const char*,所以只需说:

std::ofstream out_stream(filename.c_str());

不过,随着最新的标准修订版,情况发生了变化,因此请查看您的编译器文档以了解如何启用 C++11。

于 2012-11-01T13:55:52.930 回答
1

如果您已经将 转换intstd::string,比如说rank_s,那么rank_s + ".txt"就足够了。

于 2012-11-01T13:39:13.950 回答
1

使用 fstream 和 << 运算符。对于字符串连接:

 std::stringstream vIndex; 
 vIndex << i;  
 std::string index = vIndex.str() + ".txt";
于 2012-11-01T13:41:05.197 回答
1

如果你可以使用提升:

std::string filename = boost::lexical_cast<std::string>(rank) + ".txt";

否则(例如):

std::ostringstream s;
s << rank;
std::string filename = s.str() + ".txt";
于 2012-11-01T13:42:12.687 回答
0
std::string filename = std::to_string(i) + ".txt";

为此需要一个支持 c++11 的最新编译器

编辑回答问题: -

如果你有 c++11 就做

std::ofstream out_stream(std::to_string(i) + ".txt");

如果你不这样做,那么你最好看看其他答案

于 2012-11-01T13:46:18.050 回答