Public Group

#### Archived

This topic is now archived and is closed to further replies.

# File handling problems again.

This topic is 5921 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

This is supposed to look for an object (Object) in a text file. First of all (using geline) I look for the room. Then I take in the object name (which stands under the room name in the textfile). If Object = objecttxt, then I take in the object info and print it to the screen. I can compile it without an error, but it does''t work when I run it (or rather, it does nothing). I''ve checked all the strings and they contain the correct information when the code that I''ve included here is initiated. What am I doing wrong? (ifstream fhi) while (GetInfoCheck == true){ getline(fhi, temp, ''\n''); if (temp == currentroom){ fhi >> objecttxt; if (objecttxt == Object){ GetInfoCheck = false; getline(fin, temp, ''*''); system("cls"); cout << room.strRoomDescription; cout << "\n\n\n\n" << temp; }

##### Share on other sites
Are you using char* or std::string for your strings? If you use char arrays, you can''t compare them with ==. Use strcmp instead.

##### Share on other sites
I am using strcmp.... the compiling runs smooth without any error.. It''s kinda disturbing

##### Share on other sites
Is your file opening correctly? Are you error checking it?

##### Share on other sites
quote:
Original post by Rimrok
I am using strcmp.... the compiling runs smooth without any error.. It''s kinda disturbing

.... And you know that strcmp returns 0 (i.e. false) when the strings are identical? *just checking*
/Ksero

##### Share on other sites
Is that the *actual* code that you have posted? Can you produce a small compilable example of the code that is causing a problem? If so, then post it here and we''ll have a better chance of spotting your problem. There''s too many unknowns in what you''ve posted so far.

[ C++ FAQ Lite | ACCU | Boost | Python | Agile Manifesto! ]

##### Share on other sites

catfoodgood: Yes it is opening correctly, and how do I error check it accept checking the messages?

Ksero: Actually, I don''t know what I''m talking about, just guessing.

SabreMan: Ok, but how do I put the code in thoose code windows I''ve seen people doing here?

*Feeling like a total idiot*
But, if you don''t ask, you don''t learn!

##### Share on other sites
Rimrok, I wasn''t trying to be disparaging. When helping someone on a board like this, it''s difficult/impossible to know how much the other person knows. I was just trying to be helpful, though in hindsight, maybe it was a bit too simple...
And the source boxes... check out the forum faq... you write
]source[
source goes here!
]/source[
just flip the brackets around, like []
/Ksero

##### Share on other sites
Ksero: Don''t missunderstand me! I''m really greatful for all help I can get! I made fun of myself, because I really didn''t know what I was talking about when I said that I''m using strcmp, I''m that much of a newbie

Anyway, here''s the code:

First of all you need to create the test.txt file.
It should look like this:

RoomName
ObjectName
ObjectDiscription*

  #include <iostream> #include <fstream>#include <string>#include <windows.h>using namespace std;void main(){ifstream fget;bool GetInfoCheck = true;string temp, currentroom, objecttxt, object, objectdiscription;fget.open("test.txt");if(fget.fail()){  cout << "There is something wrong with the .txt file!"; return;}cout << "Which room do you whant to search in? \n\n: ";cin >> currentroom;//Now Iv''e got the room name that I whant to search for. cout << "\n\n What do you whant to look for? \n\n: ";cin >> object;					//Gets the object to search for.//Doh					while (GetInfoCheck == true){getline(fget, temp, ''\n'');	if (temp == currentroom){	fget >> objecttxt;		if (objecttxt == object){		GetInfoCheck = false;		getline(fget, objectdiscription, ''*'');		system("cls");		cout << "\n\n\n\n" << objectdiscription;		}		else if(objecttxt == "<objend>"){ cout << "\n\nCouldn''t find that object in " << currentroom <<  "."; Sleep(1500); GetInfoCheck = false;}	}	else if(temp == "<end>"){ cout << "\n\nCouldn''t find " << currentroom <<  "."; Sleep(1500); GetInfoCheck = false;}}fget.close();}

##### Share on other sites

Recently:
Ok, now this is disturbing... The code that I've posted here runs flawless. But it won't work when I use it as a function in a larger project. I give the function the name of the room and the name of the object, but it can't find it... The wierd thing is, when i print the name of the room/object inside the function, they look like they are supposed to... hmm...

I've solved it now... Havn't got the time to explain...

[edited by - Rimrok on May 2, 2002 12:51:48 PM]

1. 1
Rutin
23
2. 2
3. 3
JoeJ
20
4. 4
5. 5

• 29
• 40
• 23
• 13
• 13
• ### Forum Statistics

• Total Topics
631740
• Total Posts
3001959
×