The NS_CStringSetDataRange
function copies data into a section of the string's internal buffer. This is a low-level API.
#include "nsStringAPI.h" nsresult NS_CStringSetDataRange( nsACString& aString, PRUint32 aCutStart, PRUint32 aCutLength, const char* aData, PRUint32 aDataLength = PR_UINT32_MAX );
nsACString
instance to modify. PR_UINT32_MAX
, then aData is assumed to be null-terminated. Otherwise, aData need not be null terminated.
The NS_CStringSetDataRange
function returns NS_OK
if successful. Otherwise, it returns an error code.
// Replace all occurances of |matchVal| with |newVal| void ReplaceSubstring(nsACString& str, const nsACString& matchVal, const nsACString& newVal) { const char* sp, *mp, *np; PRUint32 sl, ml, nl; sl = NS_CStringGetData(str, &sp); ml = NS_CStringGetData(matchVal, &mp); nl = NS_CStringGetData(newVal, &np); for (const char* iter = sp; iter <= sp + sl - ml; ++iter) { if (memcmp(iter, mp, ml) == 0) { PRUint32 offset = iter - sp; NS_CStringSetDataRange(str, offset, ml, np, nl); sl = NS_CStringGetData(str, &sp); iter = sp + offset + nl - 1; } } }
This function was frozen for Mozilla 1.7. See bug 239123 for details.