使用C 中的RWCString读取文本文件时获取rwboundserr

Getting RWBoundsErr while reading a text file using RWCString in C++

本文关键字:文件 获取 rwboundserr 取文本 读取 中的 RWCString 使用      更新时间:2023-10-16

以下代码给我 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 

请注意,每行的末端都有一个尾巴

即使我已经确定了这个问题的解决方案,我也想了解为什么此代码失败。

查看与RWCStringoperator<<()操作员有关的文档:

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错误。