在 VC++ 6.0 使用 CString 時,根據指定行號實現整行文本替換。
CString 內容按換行符(\n 或 \r\n)分割為行陣列。void ReplaceLine(CString& str, int nLine, CString newLine) {
// 統一換行符
str.Replace(_T("\r\n"), _T("\n"));
// 分割
CStringArray lines;
int start = 0;
while (true) {
int pos = str.Find(_T('\n'), start);
if (pos == -1) { lines.Add(str.Mid(start)); break; }
lines.Add(str.Mid(start, pos - start));
start = pos + 1;
}
// 替換(行號從 1 開始)
if (nLine >= 1 && nLine <= lines.GetSize()) {
lines.SetAt(nLine - 1, newLine);
}
// 重組
str.Empty();
for (int i = 0; i < lines.GetSize(); ++i) {
str += lines[i];
if (i != lines.GetSize() - 1) str += _T("\n");
}
}
處理末尾無換行符、空行、行號越界等邊界情況。