Visual c++ 如何从富文本框中读取

Posted

技术标签:

【中文标题】Visual c++ 如何从富文本框中读取【英文标题】:Visual c++ how to read from rich text box 【发布时间】:2015-07-07 18:49:45 【问题描述】:

我正在尝试在 Visual c++ 中逐行读取富文本框,但不知道该怎么做。 谁能提供一个小例子来说明它是如何工作的?我对 Visual Studio 和 Visual C++ 真的很陌生。 我想做的是使用for循环将富文本框中的每一行存储在一个字符串中。 假设在富文本框中我有: 文本1 文本2 文本3 for 循环几乎会读取每一行,然后我会用它做其他操作。

【问题讨论】:

【参考方案1】:

您没有说明您实际使用的是哪种富文本框。

如果您使用的是 .NET RichTextBox 类,则可以遍历其 Lines 属性:

array<String^>^ lines = textBox->Lines;
int count = lines->Length;

for (int idx = 0; idx < count; ++idx)

    // use lines[idx] as needed...

如果您使用的是 MFC CRichEditCtrl 类,则可以调用其 GetLineCount()LineLength()GetLine() 方法:

int count = textBox.GetLineCount();

for (int idx = 0; idx < count; ++idx)

    std::basic_string<TCHAR> line;

    int len = textBox.LineLength(idx);
    if (len > 0)
    
        line.resize(len+1);
        len = textBox.GetLine(idx, &line[0], len);
        line.resize(len);
    

    // use line as needed...

如果您使用的是 Win32 Rich Edit 控件,您可以向它发送EM_GETLINECOUNTEM_LINELENGTHEM_GETLINE 消息:

int count = SendMessage(hTextBox, EM_GETLINECOUNT, 0, 0);

for (int idx = 0; idx < count; ++idx)

    std::basic_string<TCHAR> line;

    int len = SendMessage(hTextBox, EM_LINELENGTH, idx, 0);
    if (len > 0)
    
        line.resize(len+1);
        *(reinterpret_cast<WORD*>(&line[0])) = (WORD)len;
        len = SendMessage(hTextBox, EM_GETLINE, idx, reinterpret_cast<LPARAM>(&line[0]));
        line.resize(len);
    

    // use line as needed...

【讨论】:

尝试将提取的字符串从丰富框中添加到文件时出现此错误:二进制“ 我正在使用 .NET 丰富的框,并且示例正在运行,尝试使用一个简单的消息框,但是当我尝试像这样“文件 现在我们已经确定您使用的是 .NET(C++-CLI?),没有为 String^ 指针定义的 &lt;&lt; 运算符,即使您取消引用指针(其中您必须这样做)也没有为 String 值定义 &lt;&lt; 运算符。此外,除非file 被定义为std::wofstream 或其他基于wchar_t 的输出流,否则这样的运算符无论如何都不会工作,因为String 使用wchar_t 字符。在这种情况下,您可以迭代字符串的Chars[] 属性,将每个wchar_t 写入流... ...,但是,如果您使用std::ofstream 或其他基于char 的流,则必须使用GetBytes() 方法将String 数据转换为字节数组System.Text.Encoding,然后您可以根据需要将这些值写入您的流。 非常感谢您,是的,我正在使用 std::ofstream,因为我已经习惯了,而且您可能已经知道,我是编程新手。我会尝试转换它如果我成功了,会告诉你。再次感谢。所有这些对我来说都是新的

以上是关于Visual c++ 如何从富文本框中读取的主要内容,如果未能解决你的问题,请参考以下文章

富文本框 .rtf 字符串与通过剪切和粘贴复制文本不同。如何获得相同的格式?

在 C# 中为富文本框分配内存

如何在 Visual Studio 的文本框中保存条目 | C#

在富文本框中定位列表框

如何在 C# 的富文本框中将文本添加到用户光标的位置?

java如何转换富文本框中的中文编码格式,且把标签变成特殊字符