gpt4 book ai didi

c++ - 用于创建文件名的预处理器指令

转载 作者:太空狗 更新时间:2023-10-29 23:21:54 25 4
gpt4 key购买 nike

我必须一个接一个地打开文件才能在 C/C++ 中阅读。文件名分别是in0, in1, in2, in3.....我尝试使用预处理器指令来创建文件名。我想要类似的东西。

for(int i=0;i<n;i++)
{
string inp_file="/path/"+"in"+APPEND(i); //to generate /path/in1 etc
open(inp_file);
}

其中 APPEND 是一个宏。由于

#define APP(i) i

可以产生值(value)

#define APP(i) #i

可以将token转换为字符串。
我试图以多种方式将它们结合起来但失败了。如何获得所需的结果,或者甚至有可能通过宏获得这样的结果?

最佳答案

在您的情况下,变量 i 不是编译时常量,因此不可能使用预处理器或模板特化,因为在编译时根本不知道该值。您可以做的是将整数转换为字符串 - boost.lexical_cast是最容易使用的解决方案之一:

for (int i = 0; i < n; ++i) {
// Generate /path/in1 etc
std::string inp_file = "/path/in"+ boost::lexical_cast<std::string>(i);
open(inp_file);
}

如果你碰巧有一个支持 C++11 的编译器,你可以使用 std::to_string() .例如:

for (int i = 0; i < n; ++i) {
// Generate /path/in1 etc
std::string inp_file = "/path/in" + std::to_string(i);
open(inp_file);
}

希望对您有所帮助。祝你好运!

关于c++ - 用于创建文件名的预处理器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com