Tại sao mã này có lỗi thời gian chạy?Tại sao mã này có lỗi thời gian chạy bằng cách sử dụng bản đồ có chuỗi (C++)?
#include <cstdio>
#include <map>
#include <string>
#include <iostream>
using namespace std;
map <int, string> A;
map <int, string>::iterator it;
int main(){
A[5]="yes";
A[7]="no";
it=A.lower_bound(5);
cout<<(*it).second<<endl; // No problem
printf("%s\n",(*it).second); // Run-time error
return 0;
}
Nếu bạn sử dụng cout, nó hoạt động tốt; tuy nhiên, nếu bạn sử dụng printf nó sẽ cho lỗi thời gian chạy. Làm thế nào để sửa nó? Cảm ơn!
g ++ 4.6.3 phàn nàn với một thời gian biên dịch "lỗi: không thể chuyển các đối tượng thuộc loại không thể sao chép được 'struct std :: basic_string' đến '...'". Tôi đặt cược trình biên dịch của bạn có ít nhất một cảnh báo có liên quan quá. –
aschepler