[英]File IO reading multiple types from a file
可以说我有一个这样的文本文件
6 3
john
dan
lammar
我可以读取数字,并且只有在单独的文件中才能读取名称。 但是这里的数字和名称在一个文件中。 我如何忽略第一行并从第二行开始直接阅读?
int main()
{
vector<string> names;
fstream myFile;
string line;
int x,y;
myFile.open("test.txt");
//Im using this for reading the numbers
while(myFile>>x>>y){}
//Would use this for name reading if it was just names in the file
while(getline(myFile,line))
names.push_back(line);
cout<<names[0];
return 0;
}
我不确定我是否正确,但是如果您始终想跳过第一行,您可以直接跳过吗?
int main()
{
vector<string> names;
fstream myFile;
string line;
int x,y;
myFile.open("test.txt");
//skip the first line
myFile>>x>>y;
//Would use this for name reading if it was just names in the file
while(getline(myFile,line))
names.push_back(line);
cout<<names[0];
return 0;
}
如果您使用的是fstream,则只需调用ignore()方法:
istream& ignore ( streamsize n = 1, int delim = EOF );
因此变得非常容易:
ifstream file(filename);
file.ignore(numeric_limits<streamsize>::max(), '\n'); // ignore the first line
// read the second line
string name; getline(flie, name);
尝试这样的事情:
int main()
{
std::vector<std::string> names;
std::fstream myFile;
myFile.open("test.txt");
if( myFile.is_open() )
{
std::string line;
if (std::getline(myFile, line))
{
std::istringstream strm(line);
int x, y;
strm >> x >> y;
while (std::getline(myFile, line))
names.push_back(line);
}
myFile.close();
if( !names.empty() )
std::cout << names[0];
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.