2017-02-10 25 views
1

這是我到目前爲止有:爲什麼我的NSString變量在使用ofstream時輸出「1」?

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.我不知道爲什麼會發生這種情況。

回答

4

因爲C++ std :: ofstream無法處理ObjectiveC類。 您需要將NSString轉換爲std :: string才能使用。例如:

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

std :: ofstream來自標準C++庫。 NSString來自ObjectiveC庫。不同的庫和不同的編程語言。他們不是爲了一起工作而設計的。你可以在你的代碼中混合這些東西,因爲你的編譯器能夠理解它們,但是你需要提供一個橋樑。將語言混合在一個庫級別而不是較低級別是一個好主意。也就是說,如果您在ObjectiveC(例如GUI)中實現了一個完全分離的功能塊,並且在C++中實現了另一個功能(例如遊戲物理,業務邏輯),那麼您可以創建一個薄層以在庫之間傳遞數據。否則,請使用單一語言。

+0

謝謝!這工作 –

相關問題