2010-10-26 40 views
8

Tôi có một nsstring (filePath), có đường dẫn đến tệp âm thanh. Tôi muốn mở tệp âm thanh, vì vậy tôi muốn chuyển đổi chuỗi nsstring thành Cstring.Làm thế nào để chuyển đổi nsstring sang cString?

fopen([filePath cStringUsingEncoding:1], "r"); 

là dòng trên là chính xác hay không, bởi vì tôi cũng có thể sử dụng fopen ([filepath CString], "r") ;, Trong một số trang web nó được đề cập để sử dụng UTF8stringEncoding.Which là quyền NSString để chuyển đổi chuỗi. Xin vui lòng giúp tôi ra ngoài. Cảm ơn.

Trả lời

17

Sử dụng UTF8String:

fopen([filePath UTF8String], "r"); 
+0

tôi có thể biết sự khác biệt giữa câu trả lời của bạn và những gì tôi đã sử dụng. Làm cách nào để kiểm tra xem nó có hoạt động tốt không? – Warrior

+0

@Warrior, tôi nghĩ rằng việc đọc tài liệu sẽ làm sáng tỏ mọi điều bạn có thể có. –

+0

là bạn biết cách chuyển đổi tệp âm thanh trong Nsdata i sử dụng phiên xuất nhưng luôn thất bại – GhostRider

6

Không sử dụng UTF8String, nhưng fileSystemRepresentation.

Bạn nên làm điều này vì HFS + hoặc các hệ thống tệp khác không hoàn toàn tương thích với hệ thống Unicode. Một lý do khác: Phương thức này hoạt động bằng cách thay thế đường dẫn trừu tượng và ký tự dấu tách mở rộng (‘/’ và ‘.’ Tương ứng) với các tương đương của chúng cho hệ thống tệp hiện tại.

+0

Bạn nên giải thích chi tiết hơn tại sao bạn dường như không đồng ý với câu trả lời được chấp nhận. – manuell

+0

Vì HFS + hoặc các hệ thống tệp khác không tương thích chặt chẽ với hệ thống Unicode. Một lý do khác: Phương thức này hoạt động bằng cách thay thế đường dẫn trừu tượng và ký tự dấu tách mở rộng (‘/’ và ‘.’ Tương ứng) với các tương đương của chúng cho hệ thống tệp hiện tại. –

+0

Tốt, vì vậy chỉ cần cập nhật câu trả lời :-) – manuell

Các vấn đề liên quan