Visual c++ 将单个单词和带下划线的单词组放入数组中
我有一个程序,可以迭代文本,将单词和带下划线的单词组放入数组中……代码如下:Visual c++ 将单个单词和带下划线的单词组放入数组中,visual-c++,mfc,parallel-processing,Visual C++,Mfc,Parallel Processing,我有一个程序,可以迭代文本,将单词和带下划线的单词组放入数组中……代码如下: //loop for all text in rich edit control for(int i = 0; i < text.GetLength(); i++) { rEditCtrl.SetSel(i, i + 1); //from start to end character rEditCtrl.GetSelectionCharFormat(cf); if(cf.dwEf
//loop for all text in rich edit control
for(int i = 0; i < text.GetLength(); i++)
{
rEditCtrl.SetSel(i, i + 1); //from start to end character
rEditCtrl.GetSelectionCharFormat(cf);
if(cf.dwEffects & CFE_UNDERLINE) //check whether underline character
{
if(!groupMode) {
groupMode = true;
}
isSpace = false;
if(!word.IsEmpty()) {
std::pair <CString,bool> group;
group = std::make_pair(word,false);
groups.push_back(group);
word = "";
}
underlined = underlined + rEditCtrl.GetSelText();
}
else {
if(groupMode) {
rEditCtrl.SetSel(i, i + 1); //from start to end character
if(rEditCtrl.GetSelText() == " ") {
underlined = underlined + rEditCtrl.GetSelText();
}
else {
word = word + rEditCtrl.GetSelText();
}
groupMode = false;
if(!underlined.IsEmpty()) {
std::pair <CString,bool> group;
group = std::make_pair(underlined,true);
groups.push_back(group);
underlined = "";
}
}
else {
if(!isSpace) {
rEditCtrl.SetSel(i, i + 1); //from start to end character
if(rEditCtrl.GetSelText() == " ") {
isSpace = true;
}
else if(rEditCtrl.GetSelText() == "\r") {
if(!word.IsEmpty()) {
std::pair <CString,bool> group;
group = std::make_pair(word,false);
groups.push_back(group);
word = "";
}
}
else {
if(word == "\r") {
std::pair <CString,bool> group;
group = std::make_pair(word,false);
groups.push_back(group);
word = "";
}
}
word = word + rEditCtrl.GetSelText();
}
else if(isSpace) {
rEditCtrl.SetSel(i, i + 1); //from start to end character
if(rEditCtrl.GetSelText() != " ") {
isSpace = false;
if(!word.IsEmpty() && !AllSpaces(word)) {
std::pair <CString,bool> group;
group = std::make_pair(word,false);
groups.push_back(group);
word = "";
}
}
word = word + rEditCtrl.GetSelText();
}
}
}
}
//丰富编辑控件中所有文本的循环
对于(int i=0;i
我想知道是否有一种明显的方法可以提高我所缺少的代码的效率,或者我是否可以使用并行性来提高速度……如果并行性是一种方法……我将如何解决这个问题?我只能想到把课文分成两部分,从开头和结尾开始,在中间相遇。你觉得怎么样 循环命令中有一个小错误。它必须为(inti=0;i
)-1
我会找出处理器内核的数量,将字符串精确地拆分为这个数量的部分,并相应地启动工作线程。但是优化单个富编辑控件处理对我来说似乎有点过头了。我会尝试在代码的另一个点上做一些调整。首先是Thomiel,感谢您的回复。为什么这是循环通信中的一个错误还有?也就是说,你能解释一下减1的目的吗?其次,为并行性优化上面的代码是否会提高性能?我之所以考虑走这条路,是因为代码中的其他地方运行良好……这只是程序的一个特定功能(涉及上面的代码),使用时运行缓慢。哦,不,我错了。抱歉。我宁愿尝试找到此功能的解决方法,而不是依靠纯马力来加快速度。您可以尝试禁用重画,以便选择的连续移动不会导致每次重画丰富的编辑。