使用C ++中的变量创建部分文件名

时间:2012-06-01 17:01:22

标签: c++ variables filenames

我正在制作一个使用“graphics.h”标题的C ++程序/游戏,我正在尝试创建一个带有图块的地图。有66个瓷砖,每个文件名都不同。我想要显示它们而不必一遍又一遍地写出几乎相同的行。

这是我到目前为止(伪代码):

filename = a + number + b;
readimagefile (filename, left, top, right, bottom);

其中a是“bg(”,后跟1到66之间的数字,然后是b,这是“.bmp”。我希望文件名是这样的:“bg(number).bmp”。但是,我上面的内容显然是错误的语法。

我该怎么做呢?提前感谢您的任何答案。

3 个答案:

答案 0 :(得分:5)

std::stringstream str;
str << a << number  <<  b << ".bmp";

然后str.str()返回一个c ++ std :: string而str.str().c_str()返回一个'c'类型的字符串

答案 1 :(得分:2)

在C ++ 11中,可以使用to_string(或to_wstring)将数字转换为其字符串表示形式。例如,

a + std::to_string(number) + b

(Visual C ++ 2012标准库实现包括to_stringto_wstring。)

这比创建std::stringstream进行格式化更简单(代码更少,更易于阅读)(它的功能也更少,限制更多,但对于像你描述的那样的简单用例,它是足够了)。

或者,Boost.LexicalCast可用于将对象转换为字符串;在内部,它使用std::stringstream,但它可能针对数字类型和其他类型进行了优化,使用流将是过度杀伤。使用boost::lexical_cast

a + boost::lexical_cast<std::string>(number) + b

答案 2 :(得分:1)

for(int i=0; i<66; i++)
{
   stringstream stream;
   stream << "bg(" << i << ").bmp";
   string fileName = stream.str();
}