我需要strncpy()
(有效)从一个(编辑:MFC)CString对象到一个C字符串变量。众所周知,strncpy()
有时会失败(取决于源长** EDIT和调用中指定的长度)以正确终止dest C字符串。为了避免这种罪恶,我想在CString源对象中存储一个NUL char,然后到strcpy()
或memmove()
那个家伙。(编辑:MFC)CString类的对象的内部结构是什么?
这是一个合理的方式去解决它吗?如果是这样,我必须在CString对象内部操作什么?如果没有,那么保证正确终止的目标C字符串的替代方案是什么?
C++标准库中不存在“CString”。你是在谈论'std :: string'还是其他的东西(可能是[MFC]中的CString](http://msdn.microsoft.com/en-us/library/5bzxfsea(v = vs.100).aspx ))? – spencercw 2012-02-25 16:57:04
难道你不能把它转换成'std :: string'吗?例如:'std :: string cppString(yourCString);'。如果您确实需要原始字符串,请从'cppString.c_str()'中获取。只要注意一些Unicode转换将不起作用。 – jweyrich 2012-02-25 16:59:54
几乎在所有情况下,您都应该优先使用std :: string优先于CString。 – 111111 2012-02-25 16:59:58