ios - 为什么在使用ofstream时我的NSString变量输出“1”?

标签 ios objective-c

这是我到目前为止的内容:

minute++;//this code is in a for loop where this variable is being incremented
NSString *minuteString;

NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/YY"];
NSString *dateString = [dateFormatter stringFromDate:currentDate];

if(minute < 10){
    minuteString = [NSString stringWithFormat:@"%@ 00:0%d:00",dateString,minute];
}
if(minute > 10){

    minuteString = [NSString stringWithFormat:@"%@ 00:%d:00",dateString, minute];
}

ofs << minuteString << ",";

当我使用NSLog(@"%@",minuteString)时,输出正确的字符串。但是,当流输出到我已设置的CSV文件时,输出为数字1。我不确定为什么会这样。

最佳答案

因为C++ std::ofstream无法处理ObjectiveC类。
您需要将NSString转换为std::string才能使用ofstream。就像是:

std::string std_str([ ns_str UTF8String ] ) ;
ofs << std_str;

std::ofstream来自标准C++库。 NSString来自ObjectiveC库。不同的库和不同的编程语言。他们并不是为了一起工作而设计的。您可以在代码中混合使用这些内容,因为编译器可以理解它们,但是您需要提供一个桥梁。在库级别而不是较低级别上将语言混合在一起是一个好主意。也就是说,如果您在ObjectiveC(例如GUI)中实现了一个完全分离的功能,而在C++(例如游戏物理,业务逻辑)中又实现了一个功能,那么您将创建一个薄层以在库之间传递数据。否则,请使用一种语言。

关于ios - 为什么在使用ofstream时我的NSString变量输出“1”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151304/

相关文章:

ios - NSFetchedResultsController 需要非零获取请求和 ManagedObjectContext 错误

ios - 用另一个 NSMutableDictionary 替换 NSMutableDictionary 的一些内容

ios - iOS:重用CGContextRef?

objective-c - 在 UISearchBar 中搜索时自动完成

objective-c - 两个类方法,同名,不同签名 : How to force compiler to use intended one?

iphone - 在代码 xcode iOS objective c 中禁用 DLogs

ios - NSHTTPURLResponse 为 nil 但未生成 NSError

ios - 将图像显示为弹出窗口

ios - ld : library not found for -lGoogleAdMobAds

ios - NSString 绘制(在 : rect) method changes rect by itself