1

我有一个VB方法

Public Sub append_text(ByVal s As String)
    f1.TextBox1.AppendText(s)
End Sub

从 C++ 通过 COM 调用

_bstr_t b(L"test\nnew\nlines\n");
ATLENSURE_SUCCEEDED(t->append_text(b));

但是文本框最终会说

testnewlines

没有上述新行。

那为什么呢?

4

2 回答 2

2

为了完整起见,发布我的评论作为答案(现在我知道它是正确的......):

不同的操作系统将不同的字符组合视为换行符。例如,*nixes 使用单个\n,就像在您的代码中一样。另一方面,Windows 使用这种\r\n组合。因此,\n您的字符串中的单个不足以被视为新的行标记。使用\r\n就可以了。

于 2012-06-22T15:15:52.943 回答
1

伊兰是对的。

要在 VB 端修复它,试试这个

 Dim s2 As String = s.Replace(vbLf, vbCrLf) 
 f1.TextBox1.AppendText(s2) 

编辑Sideshow Bob 对此进行了编译和测试。

于 2012-06-23T10:48:18.600 回答