将整数连接到const char *字符串

时间:2014-03-16 17:12:13

标签: c++

我有一些文件名如下:file1file2file3等。

我有一个功能:

load(const char *file)

我会这样称呼load(file1)load(file2)等等。

我正在尝试根据导入的文件数量更加动态地执行此操作。

因此,如果我有多个文件,请执行以下操作:

if (NUM_OF_FILES > 1) {
    for (int i = 2; i <= NUM_OF_FILES; i++) {
        load("file" + i);
    }
}

然而,这不起作用。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

"file"这样的字符串文字的类型是char const[N](有一个合适的N),当它第一次有机会时,它会愉快地衰变成char const*。虽然T[N]int之间没有添加功能,但char const*int之间还有一个添加:它将int添加到指针。这不是你想要的。

您可能希望将int转换为合适的std::string,将其与您获得的字符串文字相结合,并从中获取char const*

load(("file" + std::to_string(i)).c_str());

答案 1 :(得分:1)

这取决于您使用的C ++版本。如果是C ++ 11,解决方案将涉及std::to_string。如果它是旧版本的C ++,您可以将整数转换为如下字符串:

#include <sstream>

// ...

std::ostringstream converter;
converter << i; // i is an int
std::string s(convert.str());

现在,load函数需要const char *。这是你自己的功能吗?然后考虑更改它以便它需要std::string const&,并且您将能够直接传递字符串。否则,这就是如何将字符串的内容传递给它:

load(s.c_str());