2011-05-16 57 views
0

能否請你告訴我如何更改BUF矢量的大小分爲動態長度初始化向量?具有動態長度

long five = 555; 
char buf[256]; 
snprintf(buf, sizeof(buf), "%d", five); 

THX!

如何改變我的std::vector<std::string>buf;代碼才能正常工作?
我有錯誤:

vector is not a member of std;
buf was not declared in this scope and error: expected primary-expression before ">" token

+0

'buf'不是一個向量。 – 2011-05-16 14:00:28

+0

我已編輯我的代碼 – 2011-05-16 14:04:20

+0

我想要轉換的值是long值; – 2011-05-16 14:05:49

回答

8

在C++中,你不能。你必須以某種方式動態分配它,或者更好地使用像std :: vector這樣的動態數據結構。

+0

可以使用std :: vector的PLZ你重寫我的代碼? – 2011-05-16 13:57:45

+0

我已經編輯我的代碼 – 2011-05-16 14:04:11

+0

@just我說:「你可以重寫我的代碼」,你似乎誤解StackOverflow上的點。 – Johnsyweb 2011-05-17 10:54:57

0

如果你真的不是使用Vector類,你可以自己實現動態內存。當沒有足夠的內存來存儲新值時,創建一個用於添加到數組中的函數。它會malloc新的內存,複製內容,追加新的值,刪除舊的內存,然後返回一個指向新數組的指針。它們相當於你使用的新內存將取決於你的應用程序(也就是說,只需要足夠的內存來存儲新的值來節省內存,或者比舊的大小多得多(例如雙倍),所以你不必調用這個函數經常

2

嘗試:

#include <vector> 
#include <string> 

long five = 555; 

// using vector 
std::vector<char> buf1(256); 
snprintf(&buf1[0], buf1.size(), "%d", five); 

// Or using string 
std::string  buf2(256); 
snprintf(&buf2[0], buf2.size(), "%d", five); 

雖然不是使用的snprintf()我想查找如何使用字符串流

0

你可能想使字符的載體,而不是一個向量。字符串。

我懷疑第二個錯誤是缺少溫泉ce變量名前面的字符。