以下代码给我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
请注意,每行末尾都有一个尾随空格
即使我已经找到解决此问题的方法,但我仍想了解为什么此代码失败。
最佳答案
查看与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
错误。关于c++ - 在C++中使用RWCString读取文本文件时获取RWBoundsErr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48719896/