Следующий код дает мне RWBoundsErr ошибка
прекращение вызова после выброса экземпляра ‘RWBoundsErr’
bool filterData()
{
while(!inputFile_.eof())
{
currentLine_.readLine(inputFile_);
//outputFile_<<currentLine_(0,1)<<currentLine_(2,1)<<currentLine_(4,13)<<currentLine_(0,1)<<currentLine_(2,1)<<currentLine_(4,13)<<endl;
outputFile_<<currentLine_[0]<<currentLine_[2]<<currentLine_(4,13)<<currentLine_[0]<<currentLine_[2]<<currentLine_(4,13)<<endl;
}
return (TRUE);
}
Но если я использую закомментированную строку вместо этого, все работает как ожидалось.
currentLine_ имеет тип данных RWCString
outputFile_ и inputFile_ имеют путь к входным / выходным текстовым файлам
Пример содержимого текстового файла
ABCD1234567890123 2017/10/16 13:40:28
WXYZ9876543210987 2017/10/16 13:40:28
Обратите внимание, что в конце каждой строки есть пробел
Несмотря на то, что я нашел решение этой проблемы, я хотел бы понять, почему этот код не работает.
Посмотрите на документацию, связанную с operator<<()
оператор для RWCString
:
RWvostream&
operator<<(RWvostream&, const RWCString& str);
RWFile&
operator<<(RWFile&, const RWCString& str);
Saves string str to a virtual stream or RWFile, respectively.
а также RWFile
:
RWFile&
operator<<(RWFile&, const RWCString& str);
Saves string str to a virtual stream or RWFile, respectively.
...
RWFile&
operator<<(RWFile&, const RWInteger& x);
Saves the RWInteger x to a virtual stream or RWFile, respectively.
Здесь нет <<
оператор, который будет принимать char
,
currentLine_(0,1)
подстрока, которая может быть использована с <<
оператор
RWCSubString
operator()(size_t start, size_t len);
RWCConstSubString
operator()(size_t start, size_t len) const;
С другой стороны currentLine_[0]
это char
char&
operator[](size_t i);
char
operator[](size_t i) const;
Returns the ith byte.
В вашем случае попытка использовать char
с <<
Оператор вызывает RWBoundsErr
ошибка.
Других решений пока нет …