使用fstream的替代方案

时间:2016-11-19 16:52:24

标签: c++ string fstream

我正在尝试使用c ++中的fstream从文本文件中读取多行二进制字符串。它目前正常工作,但字符串无法正常操作。我从文件中读取字符串之后需要反转字符串,这会导致空终止符位于错误的位置并导致各种错误。是否有其他选择?' fstream'将数据读取到字符串或者有什么方法可以反转从文件读入的字符串而不会弄乱空终止符。

下面是我的代码片段:

void Baby::getStore(string fileName, string* store){
    fstream myFile;
    int i=0;
    myFile.open(fileName.c_str(), ios::out | ios::in);
    string currentLine;
    if(myFile.is_open()){
        while(getline(myFile, currentLine)){
            store[i] = Baby::reverseString(currentLine);
            for(int j=31; j>=0; j--){
                store[j]
            }
            i++;
        }
        myFile.close();
    }else{
        cout << "File not found\n";
    }
}

//reverses the string it is given
string Baby::reverseString(string rev){
    string temp;
    for(int i=rev.size(); i>0; i--){
        temp += rev[i-1];
    }
    return temp;
}

1 个答案:

答案 0 :(得分:0)

另一种在不弄乱空终止符的情况下反转字符串的方法是std::reverse()函数。包括算法头文件并替换它:

store[i] = Baby::reverseString(currentLine);

用这个:

std::reverse(currentLine.begin(),currentLine.end());
store[i] = currentLine;