我发现了std::string
我编译了下面的代码并在ubuntu上执行我得到了char缓冲区和std::string
缓冲区的不同输出。
string m_fileName = "test.txt";
ifstream myfile;
myfile.open (m_fileName.c_str(), ios::out | ios::app | ios::binary);
string readBuffer="";
string fileContent = "";
char data[2048];
strcpy(data,"");
while(myfile.read((char *)readBuffer.c_str(),13)) {
strcat(data,readBuffer.c_str());
fileContent += readBuffer;
}
myfile.close();
QMessageBox msgBox;
msgBox.setText(fileContent.c_str());
msgBox.exec();
QMessageBox msgBox1;
msgBox1.setText(data);
msgBox1.exec();
std::string
fileContent仅显示最后一行。
char数据显示整个文件内容。
????
答案 0 :(得分:2)
您正在写入未分配的内存。这是未定义的行为,任何事情都可能发生。
答案 1 :(得分:-1)
您需要更改代码的某些行,如下所示:
string m_fileName = "test.txt";
ifstream myfile;
myfile.open (m_fileName.c_str(), ios::out | ios::app | ios::binary);
char readBuffer[24];
string fileContent = "";
char data[2048];
strcpy(data,"");
while(myfile.read(readBuffer,13)) {
strcat(data,readBuffer);
fileContent.append(readBuffer);
fileContent += readBuffer;
}
myfile.close();