当字符串源为文件

时间:2017-03-15 13:03:49

标签: c++ string c++builder tmemo

我正在生成文本(仅限标准alpha字符)到std::string转换为char[] - 数组到wchar并将其分配给TMemo框...(c ++ Builder。 )在另一个点(函数)我正在从文件中读取(应该是相同的)文本并将其加载到std::string转换为char[] - 数组到wchar并再次将文本加载到TMemo框中。一切正常。

创建字符串时,它使用下面的函数非常快速地加载到TMemo框中...但是当从文本文件加载字符串时,它突然变慢为爬行,大约慢10倍或更差,即使代码为两者都是相同的,不包括初始读取或创建字符串......

更重要的是,此功能的唯一缓慢部分是此行

Form1->Memo1->Text = uni_out;

如果我注释掉这一行,就没有减速......

有关为何的想法?

void print_txt(char asc_in[])
{
    wchar_t *uni_out = new wchar_t[ strlen(asc_in) + 1 ]; // + 1 for term 0
    std::mbstowcs(uni_out, asc_in, strlen(asc_in) + 1);
    Form1->Memo1->Text = uni_out;
    delete[] uni_out;
}

编辑:

我刚刚注意到,当文本文件被读取时,它的格式化已经消失了...... \ r \ n在用记事本打开文件时创建了新行,但是当用std :: ifstream打开时,std :: getline的格式化是完全消失了,虽然我还没有证实这一点,但我认为它是在一行中读取整个文件。

0 个答案:

没有答案