2011-05-12 69 views
1

有創建的字符串(STD或(常量)字符*)從字符串(爲const char *)和數量(INT)創建的,像創建迭代串

animation0,動畫1,animation2更好/更快的方式。 .. animation99

比這個?

注:不必須使用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;    
} 

感謝

+0

你已經擁有什麼可能是最好,最安全的方式(儘管也許你可以跳過一步,並初始化爲「動畫」而不是空字符串)。 – leegent 2011-05-12 10:31:34

回答

1

那麼你可以使用C99 APIsnprintf(char *str, size_t size, const char *format, ...);

int i = 0; 
char str[50]; 
while (hasValueForKey(str)) { 
    // do some stuff 
    ++i; 
    snprintf(str, 50, "animation%d", i); 
} 
+0

呃,沒有。它是C++,如果你需要printf-like,可以使用Boost.Format。 – 2011-05-12 10:35:23

+0

你可以,但這不會更好... – 2011-05-12 10:35:37

+0

@Cat Plus Plus:那麼,C99有什麼錯?它仍然有效;)另外,Boost是一個外部庫,必須下載,編譯和維護,'snprintf()'符合C99標準,因此它適用於每個編譯器。另外,爲什麼使用複雜的結構,如果他需要的只是一個char *'? – Constantinius 2011-05-12 10:39:00