C++ 创建迭代字符串

C++ 创建迭代字符串,c++,string,C++,String,有没有更好/更快的方法来创建由字符串(const char*)和数字(int)创建的字符串(std或(const)char*),比如 动画0,动画1,动画2。。。动画99 比这个好 注意:不必使用std,因为hasValueForKey接受const char* std::stringstream strIter("animation0"); int i = 0; while (hasValueForKey(strIter.str().c_str())) { // do some

有没有更好/更快的方法来创建由字符串(const char*)和数字(int)创建的字符串(std或(const)char*),比如

动画0,动画1,动画2。。。动画99

比这个好

注意:不必使用std,因为hasValueForKey接受const char*

std::stringstream strIter("animation0"); 

int i = 0;
while (hasValueForKey(strIter.str().c_str())) {

    // do some stuff

    ++i;
    strIter.str(std::string());
    strIter << "animation" << i;            
}
std::stringstream strIter(“动画0”);
int i=0;
while(hasValueForKey(strIter.str().c_str())){
//做点什么
++一,;
str(std::string());

strIter您可以将C99与snprintf(char*str,size\u t size,const char*format,…)一起使用;


您可以将C99与snprintf(char*str,size\u t size,const char*format,…)一起使用;:


您已经有了可能是最好、最安全的方法(尽管您可能可以跳过一步并将Stritter初始化为“动画”而不是空字符串)。您已经有了可能是最好、最安全的方法(尽管您可能可以跳过一步并将Stritter初始化为“动画”而不是空字符串)不,不,它是C++,如果你需要打印,比如使用Boo.Fr.Geld.@ CATPlus Plus:嗯,C99有什么不对?它仍然有效;而且,Boost是一个外部的库,必须下载、编译和维护,<代码> SNPROTFF()是C++的标准,所以它对于每个编译器都是可用的。如果需要的话,为什么使用复杂的结构是一个代码> char *< /Cord>?@康斯坦蒂尼乌斯:再次,它是C++,而不是C SNPRTNF可能是可用的(虽然它可能是不同的,如果它是扩展名),但这并不是忽视更好的选项而直接使用它的理由。C库中的printf系列不是类型安全的,而且
char*
很难看。而且,IMVHO,避免Boost是愚蠢的。@Cat Plus:我知道有比
snprintf()更“优雅”的选项
但我认为对OPs问题提供一个简单而有效的答案比批评他的接口更有用。
printf()的类型安全是一个问题
函数族。但是因为他知道他提供了一个简单的整数,所以在这个例子中不会发生什么不好的事情。当然,你是对的,在很多情况下Boost是可行的。但是我认为有时候像
snprintf()
这样更简单的工具更优雅。只是添加了char str[MAX\u char]=“animation0”;对于您的代码片段,它非常好……我希望有更多的性能调整,而不是使用缓慢的std方法(是的,它不是类型安全的,因为它的用法非常清楚)不,它不是C++,如果你需要打印,比如使用Boo.Fr.Geld.@ CATPlus Plus:嗯,C99有什么不对?它仍然在工作;此外,Boost是一个外部的库,它必须被下载、编译和维护,<代码> SNPROTFF()是C++的标准,所以它对于每个编译器都是可用的。如果需要的话,为什么使用复杂的结构是一个代码> char *< /Cord>?@康斯坦蒂尼乌斯:再次,它是C++,而不是C SNPRTNF可能是可用的(虽然它可能是不同的,如果它是扩展名),但这并不是忽视更好的选项而直接使用它的理由。C库中的printf系列不是类型安全的,而且
char*
很难看。而且,IMVHO,避免Boost是愚蠢的。@Cat Plus:我知道有比
snprintf()更“优雅”的选项
但我认为对OPs问题提供一个简单而有效的答案比批评他的接口更有用。
printf()的类型安全是一个问题
函数族。但是因为他知道他提供了一个简单的整数,所以在这个例子中不会发生什么不好的事情。当然,你是对的,在很多情况下Boost是可行的。但是我认为有时候像
snprintf()
这样更简单的工具更优雅。只是添加了char str[MAX\u char]=“animation0”;对于您的代码片段,它非常好…我希望有更多的性能调整,而不是使用缓慢的std方法(是的,它不是类型安全的,因为它的用法非常清楚),这并不重要。。。
int i = 0;
char str[50];
while (hasValueForKey(str)) {
    // do some stuff
    ++i;
    snprintf(str, 50, "animation%d", i);
}