Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menambah Integer dengan betul pada String dalam C?

Bagaimana untuk Menambah Integer dengan betul pada String dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 17:08:02939semak imbas

How to Correctly Append an Integer to a String in C  ?

Menambah Integer pada Rentetan dalam C

Kaedah std::string::append() dalam C digunakan untuk menambah urutan aksara atau rentetan kepada rentetan sedia ada. Walau bagaimanapun, adalah penting untuk memahami kelakuannya untuk mengelakkan ralat.

Pertimbangkan coretan kod berikut:

std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);

Kod ini cuba menambahkan integer ClientID pada rentetan pertanyaan. Walau bagaimanapun, ia menimbulkan Kegagalan Penegasan Nyahpepijat. Sebabnya ialah std::string::append() menjangkakan argumen char* yang menunjuk kepada rentetan yang ditamatkan nol.

Penyelesaian:

Untuk menambah dengan betul integer kepada rentetan, beberapa pendekatan tersedia:

  • Menggunakan std::ostringstream:
#include <sstream>

std::ostringstream s;
s << "select logged from login where id = " << ClientID;
std::string query(s.str());
  • Menggunakan std::to_string (C 11 dan kemudian):
std::string query("select logged from login where id = " +
                  std::to_string(ClientID));
  • Menggunakan boost::lexical_cast:
#include <boost/lexical_cast.hpp>

std::string query("select logged from login where id = " +
                  boost::lexical_cast<std::string>(ClientID));

Kaedah ini memastikan bahawa integer ditukar dengan betul kepada rentetan sebelum menambahkannya pada rentetan pertanyaan, mengelakkan Kegagalan Penegasan Nyahpepijat.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Integer dengan betul pada String dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn