我想使用C ++从文件中提取一些整数,但我不确定我是否正确使用它。
我在VB6中的代码如下:
Redim iInts(240) As Integer
Open "m:\dev\voice.raw" For Binary As #iFileNr
Get #iReadFile, 600, iInts() 'Read from position 600 and read 240 bytes
我转换为C ++如下:
vector<int>iInts
iInts.resize(240)
FILE* m_infile;
string filename="m://dev//voice.raw";
if (GetFileAttributes(filename.c_str())==INVALID_FILE_ATTRIBUTES)
{
printf("wav file not found");
DebugBreak();
}
else
{
m_infile = fopen(filename.c_str(),"rb");
}
但现在我不知道如何从那里继续,我也不知道“rb”是否正确。
答案 0 :(得分:1)
我不知道VB如何读取文件但是如果你需要从文件中读取整数,请尝试:
m_infile = fopen(myFile, "rb")
fseek(m_infile, 600 * sizeof(int), SEEK_SET);
// Read the ints, perhaps using fread(...)
fclose(myFile);
或者您可以使用 ifstream 来使用C ++方式。
使用流的完整示例(注意,您应该添加错误检查):
#include <ifstream>
void appendInts(const std::string& filename,
unsigned int byteOffset,
unsigned int intCount,
const vector<int>& output)
{
std::ifstream ifs(filename, std::ios::base::in | std::ios::base::binary);
ifs.seekg(byteOffset);
for (unsigned int i = 0; i < intCount; ++i)
{
int i;
ifs >> i;
output.push_back(i);
}
}
...
std::vector<int> loadedInts;
appendInts("myfile", 600, 60, loadedInts);
答案 1 :(得分:0)
而不是向量使用整数数组和传递路径文件描述符以及指向函数read()
的数组指针
如下
...
int my_integers[240];
read(m_infile, my_integers, 240, 600);
..
有关read()
的更多信息,请参阅http://pubs.opengroup.org/onlinepubs/009695399/functions/read.html