Objective c 目标C:如何从包含由/n分隔的字符串列表的文件中读取字符串,然后分别存储字符串的每个字符
我正在为iPhone构建一个类似于mastermind的游戏,我需要逐个字符比较两个字符串。我需要从数据库中选择一个字符串,并将其与播放器输入的字符串进行比较 我试过以下方法,但似乎不起作用。你能帮帮我吗Objective c 目标C:如何从包含由/n分隔的字符串列表的文件中读取字符串,然后分别存储字符串的每个字符,objective-c,file,Objective C,File,我正在为iPhone构建一个类似于mastermind的游戏,我需要逐个字符比较两个字符串。我需要从数据库中选择一个字符串,并将其与播放器输入的字符串进行比较 我试过以下方法,但似乎不起作用。你能帮帮我吗 //create file handle NSFileHandle *file; file = [NSFileHandle fileHandleForReadingAtPath:@"4db.txt"]; //read data into file in NSData format NSDat
//create file handle
NSFileHandle *file;
file = [NSFileHandle fileHandleForReadingAtPath:@"4db.txt"];
//read data into file in NSData format
NSData *filedata;
filedata = [file readDataToEndOfFile];
//convert NSData to NSString
NSString *string;
string = [[NSString alloc] initWithData:filedata encoding:NSASCIIStringEncoding];
//convert from string to array
NSArray *lines = [string componentsSeparatedByString:@"\n"];
//take one of the string and store it in sword
NSString *sword = [lines objectAtIndex:0];
//convert string to char
const char *word = [sword UTF8String];
sec[0] = word[0];
sec[1] = word[1];
sec[2] = word[2];
sec[3] = word[3];
我现在假设sec包含我从文件中读取的字符串的字符。它似乎不起作用。请帮忙。如果你能建议的话,任何其他有效的方法都是很好的。你在那里经历了很多困难。只需一条语句,即可使用文件内容初始化字符串:
NSString *str = [NSString stringWithContentsOfFile:@"db4.txt"
encoding:NSASCIIStringEncoding
error:NULL];
尽管在这种情况下,您可能希望通过提供NSError*
,确保正确读取文件内容:
NSError *error;
NSString *str = [NSString stringWithContentsOfFile:@"db4.txt"
encoding:NSASCIIStringEncoding
error:&error];
if (fileContents == nil)
NSLog (@"Error! %@", error);
尽可能地用可可粉。如果要比较字符串,最好将任何C样式的字符串转换为NSStrings并比较NSStrings,而不是返回到C样式的字符串。。。。。。什么不起作用 你所说的是正确的……是的。我可能会这样做:
NSString * contents = [NSString stringWithContentsOfFile:@"db4.txt" encoding:NSASCIIStringEncoding error:nil];
NSArray * lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSString * firstLine = [lines firstObject];
NSString * userEnteredString = ...;
if ([firstLine isEqualToString:userEnteredString]) {
//the first line matches what the user entered
}
编辑
如果它找不到您的db4.txt
文件,那是因为它在错误的位置查找它。尝试以下方法:
NSString * dbFile = [[NSBundle mainBundle] pathForResource:@"db4" ofType:@"txt"];
NSString * contents = [NSString stringWithContentsOfFile:dbFile encoding:NSASCIIStringEncoding error:nil];
尝试在每行之后运行调试器或调用NSLog,确保每一步都符合预期。此外,使用
[NSString stringWithContentsOfFile:@“4db.txt”编码:NSASCIIStringEncoding error:NULL]
哇!!最后它成功了。谢谢Dave:):)NSString*dbFile=[[NSBundle mainBundle]路径资源:@“db4”类型:@“txt”];成功了:)