在 C++ 中读取带有模式的文件
Read file with pattern in C++
我想读取一个有模式的文件,我想在最后保存值。例如。如果它是一个房间,它具有三个必须保存的值大小值等等。
我要读取的文件是这样的:
room
{
size 5 3.3 6
wallpaper
{
texture flower.bmp
tiling 3 1
}
}
object vase
{
translation 0.2 0 0.5
roation 0 1 0 0
scaling 1 1 1
model vase.obj
parent tisch
}
Object tisch
{
translation 2.0 0 3
roation 0 1 0 45
scaling 1.5 1 1
model tisch.obj
parent NULL
}
我是这样开始的。如何读取和保存房间和对象的下一行?
fstream osh("/Users/torhoehn/Desktop/room.osh", ios::in);
string line;
if (osh.good()) {
while (getline(osh, line, '[=11=]')) {
if (line.compare("room")) {
cout << "Found room" << endl;
}
if (line.compare("object")) {
cout << "Found object" << endl;
}
}
osh.close();
}
使用输入运算符:
string noun, junk;
while(osh >> noun) {
if (noun == "room") {
cout << "Found room ";
osh >> junk >> junk; // for the brace and "size"
float length, width, height;
osh >> length >> width >> height;
cout << length << " long and " << breadth << " wide" << endl;
...
}
if ( noun == "object" ) {
osh >> noun; // what kind of object?
if ( noun == "vase" ) {
cout << "found vase ";
osh >> junk >> junk;
float translationX, translationY, translationZ;
osh >> translationX >> translationY >> translationZ;
...
}
if ( noun == "tisch" ) {
cout << "found tisch ";
osh >> junk >> junk;
float translationX, translationY, translationZ;
osh >> translationX >> translationY >> translationZ;
...
}
...
} // object
...
在你完美地工作之后,你可以考虑为 Room
class、Vase
class 等编写构造函数,等等,
这将使代码更清晰。
我想读取一个有模式的文件,我想在最后保存值。例如。如果它是一个房间,它具有三个必须保存的值大小值等等。
我要读取的文件是这样的:
room
{
size 5 3.3 6
wallpaper
{
texture flower.bmp
tiling 3 1
}
}
object vase
{
translation 0.2 0 0.5
roation 0 1 0 0
scaling 1 1 1
model vase.obj
parent tisch
}
Object tisch
{
translation 2.0 0 3
roation 0 1 0 45
scaling 1.5 1 1
model tisch.obj
parent NULL
}
我是这样开始的。如何读取和保存房间和对象的下一行?
fstream osh("/Users/torhoehn/Desktop/room.osh", ios::in);
string line;
if (osh.good()) {
while (getline(osh, line, '[=11=]')) {
if (line.compare("room")) {
cout << "Found room" << endl;
}
if (line.compare("object")) {
cout << "Found object" << endl;
}
}
osh.close();
}
使用输入运算符:
string noun, junk;
while(osh >> noun) {
if (noun == "room") {
cout << "Found room ";
osh >> junk >> junk; // for the brace and "size"
float length, width, height;
osh >> length >> width >> height;
cout << length << " long and " << breadth << " wide" << endl;
...
}
if ( noun == "object" ) {
osh >> noun; // what kind of object?
if ( noun == "vase" ) {
cout << "found vase ";
osh >> junk >> junk;
float translationX, translationY, translationZ;
osh >> translationX >> translationY >> translationZ;
...
}
if ( noun == "tisch" ) {
cout << "found tisch ";
osh >> junk >> junk;
float translationX, translationY, translationZ;
osh >> translationX >> translationY >> translationZ;
...
}
...
} // object
...
在你完美地工作之后,你可以考虑为 Room
class、Vase
class 等编写构造函数,等等,
这将使代码更清晰。