如何在字符串中插入整数i
?我试过这个,但它没有用:
for (int i = 0; i < maxFrameBoss1; i++) {
boss1Image[i] = al_load_bitmap("boss1//frame_0" + i + "_delay-0.03s.png");
}
答案 0 :(得分:5)
您需要先将i
转换为字符串。然后连接字符串。最后(显然)获得了al_load_bitmap
的char指针:
for (int i = 0; i < maxFrameBoss1; i++) {
std::string filename = "boss1//frame_0" + std::to_string(i) + "_delay-0.03s.png";
boss1Image[i] = al_load_bitmap(filename.c_str());
}
答案 1 :(得分:4)
如何在字符串中插入“i”变量。
有一个标准库函数可以将int
转换为std::string
。请参阅http://en.cppreference.com/w/cpp/string/basic_string/to_string。
使用
std::string filename = std::string("boss1//frame_0") + std::to_string(i) + "_delay-0.03s.png";
boss1Image[i] = al_load_bitmap(filename);
如果al_load_bitmap
无法使用std::string
,请使用:
std::string filename = std::string("boss1//frame_0") + std::to_string(i) + "_delay-0.03s.png";
boss1Image[i] = al_load_bitmap(filename.c_str());
答案 2 :(得分:4)
从任意输入类型构造字符串的简单方法是使用std::ostringstream
,如下所示:
for (int i = 0; i < maxFrameBoss1; i++) {
std::ostringstream bitmap_filename_builder;
bitmap_filename_builder << "boss1//frame_0" << i << "_delay-0.03s.png";
boss1Image[i] = al_load_bitmap(bitmap_filename_builder.str().c_str());
}
使用此功能时,请注意std::ostrinsgstream::str()
函数返回的临时创建的std::string
变量的生命周期。执行该语句后,c_str()
函数的结果可能会成为悬空指针。
确保您正在调用的函数获取该c样式字符串参数的副本,或者只是以强顺序方式使用它,并且不将该指针存储为状态别处。
答案 3 :(得分:1)
最简单的解决方案是使用std::to_string(i)
,但这可能会导致额外的分配,因为std::string
无法知道中间+
操作的最终大小。
相反,您可能希望使用absl::StrCat
或其他一些变体:
for (int i = 0; i < maxFrameBoss1; i++) {
std::string filename = absl::StrCat("boss1//frame_0", i, "_delay-0.03s.png");
boss1Image[i] = al_load_bitmap(filename.c_str());
}
这是一个相对较小的性能点,但解决方案很容易值得一提。