以下代码给我 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_具有InOut/Output TXT文件的路径
文本文件的示例内容
ABCD1234567890123 2017/10/16 13:40:28
WXYZ9876543210987 2017/10/16 13:40:28
请注意,每行的末端都有一个尾巴
即使我已经确定了这个问题的解决方案,我也想了解为什么此代码失败。
查看与RWCString
的operator<<()
操作员有关的文档:
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
错误。