在std :: string中,只有const成員可以像c_str()那樣獲取數據。不過,我可以通過operator[]
獲得字符串的第一個元素的引用,我可以寫入它。寫入std :: string是否合法?
舉例來說,如果我有功能:
void toupper(char *first,char *last_plus_one);
我可以直接寫信給矢量獲得一個指向第一個元素:
vector<char> message // has "Some Message";
toupper(&message[0],&message[0]+message.size());
我可以做同樣的事情的std :: string ?
string message="Some Message";
toupper(&message[0],&message[0]+message.size());
標準是否確保內存的位置實際上是線性的?即:
&(*(message.begin()+n)) == &message[n]
謝謝。
不能您只需模板化的TOUPPER功能,允許使用字符串迭代器而不是指針? – jalf 2009-04-17 15:17:53
如果我能我不會問。想想我有一個龐大的第三方庫,可能支持Unicode或其他的東西,他們的API使用指針。因爲將它作爲模板來實現只需花費很多成本。 – Artyom 2009-04-17 15:20:32
@jalf:我手邊沒有這個標準,但我相信std :: to_upper正是你的建議。 – 2009-04-17 16:19:26