【发布时间】:2016-11-19 16:52:23
【问题描述】:
我正在尝试使用 c++ 中的 fstream 从文本文件中读取多行二进制字符串。它目前可以正常工作,但无法正常操作字符串。从文件中读取字符串后,我需要反转字符串,这会导致空终止符位于错误的位置并导致各种错误。是否有任何替代“fstream”来将数据读取到字符串的方法,或者有什么方法可以反转从文件中读取的字符串,而不会弄乱空终止符。
这是我的代码的 sn-p:
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;
}
【问题讨论】:
-
也许阅读有关密钥
const并使用std::vector和std::array -
你的问题不是
fstream。那是你的reverseString函数坏了。这不是fstream的错。还不清楚j周围的内部循环应该做什么。总体而言,您的代码似乎普遍存在问题。 -
你写错了算法,跟 fstream 没有关系!
-
@NicolBolas 对不起,围绕 j 的循环是当我试图做一些我应该删除它的时候。它在哪些方面被破坏?反向字符串似乎成功地反转了传入的字符串,而不是从文件中读取的字符串。这些行在反转之前也成功存储在“存储”中。它符合要求,只是没有按预期处理字符串。