Xem xét việc này (nhân tạo) ví dụ:Tại sao ostream in `1` cho một chuỗi được định nghĩa là` volatile char [] `?
#include <cstdio>
#include <iostream>
int main() {
volatile char test[] = "abc";
std::printf("%s\n", test);
std::cout << test << "\n";
}
Biên soạn nó với GCC và chạy cho kết quả như sau:
$ g++ test.cc
$ ./a.out
abc
1
Như bạn thấy printf
in chuỗi chính xác trong khi cout
in 1
. Tại sao viết thư cho cout
sản xuất 1
trong trường hợp này?
'volatile char [N]' matches 'bool' better tha n 'const char *'. Trên thực tế, nó không phù hợp với 'const char *'. – chris
@sharth tuyệt vời bắt, tôi thậm chí không nghĩ để tìm một dup. Họ là đủ gần họ có thể làm cho một hợp nhất tốt. –