【发布时间】:2017-01-12 23:44:09
【问题描述】:
我习惯用c#编程,但现在我不得不帮助我的室友完成一个c++项目。
这是“不工作的代码”:
void HighlightKeyWords::Highlight(TRichEdit eMemo,TRichEdit RichEdit1)
{
ifstream file("KeyWords.txt");
AnsiString temp;
int maxWordLength=0;
if(file.is_open())
{
while(file>>temp)
{ if(temp.Length()> maxWordLength)
{
maxWordLength=temp.Trim().Length();
}
keyWords.push_back(temp);
}
file.close();
}
else
{
ShowMessage("Unable to open file. ");
}
for(unsigned i=0;i<KeyWords.size();i++)
{
richEdit1->Text=KeyWords[i];
}
eMemo->Text=MaxWordLength;
}
我从文件中得到一个关键字列表。在 MaxWordLength 我想知道一个单词的最大长度(单词在文本文件中由换行符分隔)。当我执行 temp.Length 时,我得到 695(文件中所有字符的数量)。为什么我没有得到要添加到向量中的单词的实际长度?
谢谢!
LE:我还在下面的 for 中执行了 MaxWordLength 逻辑,即我将项目放入 RichEdit 的位置。
【问题讨论】:
-
你的风格要了我的命。请使用小写字母作为变量的第一个字母。语法高亮显示将它们作为类拾取。
-
另外,AnsiString 没有
>>运算符。代码在哪里? -
>> 的代码是 ifstream File 变量的一部分。文件的每一行都在临时变量中引入。变量我将使用小写,编辑即将推出
-
对不起,让我改写一下:ifstreams 的运算符
>>不包括AnsiString的实现(参见此处:cplusplus.com/reference/istream/istream/operator%3E%3E),它必须重载。我假设这段代码可以编译,所以必须在某处定义istream& operator>> (AnsiString& val);。 -
@mascoj 此函数在 ansistring 标头中声明,但我找不到任何有关其预期行为的文档。也许它会读取整个文件