- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Vì những lý do ngoài tầm kiểm soát của tôi, tôi cần phải quay lại từ hàm const char*
, nhưng tôi không biết ký tự
Những gì cần có vào thời gian biên dịch. Giải pháp của tôi trông như thế này:
const char* __str__() {
static std::string Chuỗi;
String = [một số thứ ưa thích];
trả về String.c_str();
}
static
Điều này ngăn chuỗi bị hủy khi thoát khỏi hàm, nhưng nó cũng có nghĩa là bộ nhớ vẫn tồn tại cho đến khi chương trình của tôi thoát (phải không?). Bởi vì chuỗi trả về đôi khi có thểrất lớn (GB), đây có thể là một vấn đề thực sự.
Tôi thường tránh con trỏ bằng mọi giá và chỉ sử dụng chúng cho các thành viên trong lớp static
, vì vậy tôi không chắc chắn 100% về việc mình đang làm. Điều này có được đảm bảo để làm việc? Có cách nào tốt hơn?
[Bối cảnh của câu hỏi này là in một đối tượng phức tạp trong python, sử dụng__str__
phương pháp. Tôi xác định phương thức trong mã C++ của mình và sau đó gói nó bằng SWIG. Ví dụ SWIG cho thấy static
sử dụng, nhưng tôi không rõ ràng rằng đây là cách duy nhất. Tôi sẵn sàng đón nhận các đề xuất. ]
câu trả lời hay nhất
static
Có các vấn đề khác ngoài việc chỉ định phạm vi:
Bất kỳ lý do nào không trả lại giá trị và để người gọi giải phóng nó? :
const char* __str__() {
char *s = malloc(2 * 1024 * 1024 * 1024); // 2 GB
[một số thứ lạ mắt với s];
trả lại s;
}
...
const char *magic = __str__();
[làm điều gì đó với phép thuật]
miễn phí (ma thuật); ma thuật = NULL // tất cả đã xong
Về c++ - trả về const char*; tĩnh xấu đến mức nào? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/9814040/
Câu hỏi này đã có câu trả lời ở đây: Tại sao các toán tử gán +=, -=, *=, /= của Java không yêu cầu truyền (11 câu hỏi)
Khi tôi cố chạy đoạn mã sau, List(.of) không biên dịch được và báo lỗi chủ đề. bộ sưu tập gói; nhập java.util.LinkedHashSet;
Tôi đang cố gắng biên dịch một chương trình sử dụng thư viện ChatScript. Đây là mã của tôi trong một tệp có tên main.cpp: #include #include "common.h" sử dụng không gian tên std
Tôi muốn sử dụng ChatScript bên ngoài trong chương trình của mình. Trong tài liệu có ghi: Nhúng Bước #1 Trước tiên, bạn sẽ cần sửa đổi `common.h và
Giả sử tôi có một char và tôi muốn strcat() nó thành một mảng char với một dòng mã. Ví dụ [không thực tế]: strcat("ljsdflusdfg",getchar()); Hoặc tôi muốn làm ngược lại
Tôi có chữ ký loại sau: *Main Lib> let f :: a -> a -> a; f = không xác định *Main Lib> let x :: Char x = undefin;
Tôi đang học cách sử dụng con trỏ trong C (sử dụng malloc và miễn phí), nhưng tôi gặp một số vấn đề với bài tập này. Tôi chỉ muốn tạo một mảng con trỏ trong đó tôi muốn lưu hướng của mỗi từ. Sau đó, tôi muốn thực hiện free() cho một từ cụ thể,
Tôi có một char*: char* version = "10.5.108"; Tôi muốn nhận hai char* mới bằng dấu phân cách ký tự. char delimiter = '.'; Sau khi thực thi đoạn mã sau: printf("|
Gần đây tôi đang học Cpp và có điều gì đó kỳ lạ đã xảy ra khi tôi học cách sử dụng Clion để thử nghiệm ngày hôm nay. Đây là mã của tôi int main() { char c = 'b';
Tôi mới làm quen với c và tôi đang xem lại một số mã. Tôi đã xem qua điều này: static char * fromDataType; static char * toDataType; static char * fromR;
Tôi có một cấu trúc động như thế này: struct network { int count; char** ips } Nếu tôi biết rằng mỗi mảng chuỗi là 16 byte (tức là INET_ADDRSTR
Tôi có một chương trình cũ sử dụng một số chức năng thư viện nhưng tôi không có thư viện đó. Vì vậy tôi đang viết chương trình này bằng thư viện C++. Trong mã cũ đó có một số hàm được gọi như thế này *string = newstrdup("Đây là một số từ");
Tôi đang viết một hàm lấy một ArrayList rồi sao chép từng char[] sang một char[] khác có độ dài tăng dần rồi thêm char[] mới vào ArrayList mới. Khi tôi cố gắng sao chép mảng
Tôi đang tìm bản đồ > và tạo mọi bản đồ có thể có từ nó. Tôi biết việc này có thể sử dụng nhiều bộ nhớ và mất chút thời gian. Mỗi bản đồ cần chứa từng chữ cái az và ánh xạ tới một ký tự az duy nhất. tức là. Ah bjcp di EVfh ga trứng đỏ máu
#define NAME_LEN 20 #include "stdio.h" #include "stdlib.h" #include "string.h" #pragma Warning(disab
Vì vậy tôi phải tạo một hàm tìm cặp có chữ cái đầu tiên và trả về chữ cái thứ hai. Tôi thực sự đã tìm thấy câu trả lời nhưng không thể tìm thấy nó bằng chức năng bản đồ. tra cứu :: Char -> [(Char, Cha
Gần đây tôi đã được phỏng vấn và được yêu cầu viết mystrcat(*s1, *s2, *s3) trong đó s1 và s2 là các chuỗi nguồn và kết quả nối được đưa ra bởi s3. Tôi được yêu cầu đừng lo lắng về việc cấp phát bộ nhớ cho s3 và cho rằng s1 và s2 không phải là các từ rỗng/không hợp lệ
Hôm nay tôi đang thảo luận với một đồng nghiệp về chữ ký chức năng "chính" bất thường của anh ấy (đối với tôi). Anh ấy thích khai báo nó như thế này: int main(int argc, char* (*argv)[]) { printf("at index
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 12 năm trước. Có thể trùng lặp: Sự khác biệt giữa char mới [10] và cha mới là gì
Thông thường các chuỗi ký tự có kiểu const char[]. Nhưng khi tôi coi nó là loại khác, tôi nhận được kết quả lạ. unsigned char *a = "\355\1\23"; Sử dụng trình biên dịch này sẽ đưa ra cảnh báo "Con trỏ khi khởi tạo
Tôi là một lập trình viên xuất sắc, rất giỏi!