为什么我会打电话std::string::data()
超过std::string::c_str()
?当然这里有一些方法来标准的疯狂...std :: string :: c_str和std :: string :: data有什么区别?
回答
c_str()返回一个指向带有NUL字节的数据的指针,因此可以使用返回值作为“C字符串”。
data()返回指向数据的指针而不做任何修改。
如果您使用的代码假定一个字符串是NUL终止(例如写入处理C字符串的任何函数),请使用c_str()。
现在MS STL 10.0那里似乎没有什么区别,因为我看到这个标题:
... \微软的Visual Studio 10.0 \ VC \包括\ xstring
const _Elem *c_str() const
{ // return pointer to null-terminated nonmutable array
return (_Myptr());
}
const _Elem *data() const
{ // return pointer to nonmutable array
return (c_str());
}
所以他们返回相同的东西。
不再是真的。它在VC 9.0中看起来也完全一样。 – 2011-07-06 22:31:44
这是当前标准允许的行为,并且是下一个标准所要求的行为。我怀疑大多数图书馆现在都在这样做了一段时间,准备转换。 – 2011-07-07 05:16:44
谢谢丹尼斯。 – 2011-07-07 09:37:08
- 1. 的std :: string :: c_str()和临时
- 2. std :: to_string,boost :: to_string和boost :: lexical_cast <std::string>有什么区别?
- 3. C++ std :: string和string
- 4. std :: string name和std :: string&name之间的C++区别
- 5. String和new String有什么区别?
- 6. std :: set和std :: vector有什么区别?
- 7. std :: merge和std :: set_union有什么区别?
- 8. std :: string和stdarg.h
- 9. std :: std :: string保证.c_str()返回相同的结果吗?
- 10. Jetty - WebSocket.sendMessage(String data)和void sendMessage(byte frame,String data)之间有什么区别?
- 11. Cython C++和std :: string
- 12. std :: string :: append(std :: string)错误的输出
- 13. C++循环std :: vector <std :: map <std :: string,std :: string>>
- 14. std :: string xml string to object
- 15. 使用std :: sscanf和std :: string的C++
- 16. 为什么不支持连接std :: string和std :: string_view?
- 17. std :: sort on std :: vector <std::string>
- 18. print unordered_map <std :: string,std :: list <std::string>
- 19. ctypes python std :: string
- 20. 为什么std :: cin.getline没有采用std :: string的oveloaded方法?
- 21. 的std ::列表<std::string> ::迭代器的std :: string
- 22. OkHttp的.string()和.toString()有什么区别?
- 23. 搜索为std :: string
- 24. lambda和std :: function有什么区别?
- 25. “UTF-16”和“std :: wstring”有什么区别?
- 26. string :: c_str查询
- 27. 的std :: string到LPOLESTR
- 28. string.Equals(“string”)和“String”.Equals(string)的区别是什么?
- 29. 为什么我的std :: string被截断?
- 30. 什么'的std :: string(*)(INT)确实星座(*)`
只想指出,在下一个版本的C++ [C++ 11或C++ 0x或任何你想调用它的东西]中,这两个函数的定义是同义词。 – 2011-07-06 22:33:11