我正在生成文本(仅限标准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的格式化是完全消失了,虽然我还没有证实这一点,但我认为它是在一行中读取整个文件。