Có một vài tùy chọn và tùy chọn nào bạn muốn tùy thuộc vào ngữ cảnh.
Cách đơn giản nhất là
std::cout << text << i;
hoặc nếu bạn muốn điều này trên một dòng đơn
std::cout << text << i << endl;
Nếu bạn đang viết một chương trình đơn luồng và nếu bạn không gọi mã này rất nhiều (nơi "rất nhiều" là hàng ngàn lần mỗi giây) thì bạn đã hoàn thành.
Nếu bạn đang viết một chương trình đa luồng và nhiều hơn một luồng được ghi vào cout, thì mã đơn giản này có thể khiến bạn gặp rắc rối. Hãy giả sử rằng thư viện đi kèm với trình biên dịch của bạn đã tạo ra chuỗi cout đủ an toàn hơn bất kỳ cuộc gọi nào tới nó sẽ không bị gián đoạn. Bây giờ chúng ta hãy nói rằng một chủ đề đang sử dụng mã này để viết "Người chơi 1" và một người khác đang viết "Người chơi 2". Nếu bạn may mắn, bạn sẽ nhận được như sau:
Player 1
Player 2
Nếu bạn không may mắn bạn có thể nhận một cái gì đó như sau
Player Player 2
1
Vấn đề là std :: cout < < văn bản < < i < < endl; chuyển thành 3 cuộc gọi hàm. Mã này tương đương như sau:
std::cout << text;
std::cout << i;
std::cout << endl;
Nếu thay vào đó bạn sử dụng printf C-phong cách, và một lần nữa trình biên dịch của bạn được cung cấp một thư viện runtime với chủ đề an toàn hợp lý (mỗi lần gọi hàm là nguyên tử) sau đó đoạn mã sau sẽ làm việc tốt hơn:
printf("Player %d\n", i);
Có thể thực hiện điều gì đó trong một cuộc gọi hàm cho phép thư viện io cung cấp đồng bộ hóa dưới bìa và bây giờ toàn bộ dòng văn bản của bạn sẽ được ghi nguyên tử.
Đối với các chương trình đơn giản, std :: cout thật tuyệt. Ném đa luồng hoặc các biến chứng khác và printf ít phong cách bắt đầu trông hấp dẫn hơn.
Nguồn
2008-09-15 18:13:49
Ha, bạn nên sử dụng một trong số đó! – jjnguy
Ngoài ra, từ bên phải ở đây là 'ghép/nối thêm một số nguyên vào một chuỗi' – Gishu
bạn có thể nối thêm vào chuỗi ký tự bằng chữ số .. – user2971569