2017-01-12 4 views
0

Я привык программировать в C#, но теперь мне пришлось помочь моему соседу по комнате с проектом C++.C Builder (C++) AnsiString Метод длины

Это «не работает код»:

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: Я также использовал логику MaxWordLength в нижеприведенной таблице, где я помещаю элементы в RichEdit.

+0

Ваш стиль убивает меня. Пожалуйста, используйте строчные буквы для первой буквы переменной. Ярлык синтаксиса подбирает их как классы. – mascoj

+0

Кроме того, AnsiString не имеет оператора '' '' '' '' ''. Где код для этого? – mascoj

+0

Код для >> является частью переменной файла ifstream. Каждая строка файла вводится в переменную temp. Я буду использовать строчную букву для переменной, скоро появится редактирование –

ответ

0

Используйте file.getline() вместо оператора >>, который не будет производить нужный вывод в вашем случае, но даст вам полное содержимое файла в качестве результата. Итак, AnsiString(). Length() не является вашей проблемой. Просто измените часть своего кода, чтобы заставить его работать по-своему:

char buffer[255]; 

if(file.is_open()){ 
    while(file.getline(buffer, sizeof(buffer))){ 
     temp = AnsiString(buffer).Trim(); 
     if(temp.Length()> maxWordLength) maxWordLength=temp.Length(); 
     keyWords.push_back(temp); 
    } 
    file.close(); 
} 
Смежные вопросы