C++ Academy · Pelajaran

Penukaran Rentetan: to_string dan stoi

Tukar antara rentetan dan jenis berangka dengan selamat menggunakan std::to_string, std::stoi dan std::stod.

Pelajaran 4 daripada 413 langkah

Penukaran Rentetan: to_string dan stoi ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Mengapa Penukaran Rentetan Penting

Anda sentiasa perlu menukar antara nombor dan teks — untuk masukan pengguna, fail konfigurasi, JSON, URL dan catatan.

std::to_string

std::to_string menukar sebarang jenis angka terbina dalam kepada rentetan. Ia menggunakan pemformatan lalai.

#include <string>

std::string a = std::to_string(42);     // "42"
std::string b = std::to_string(-7);     // "-7"
std::string c = std::to_string(3.14);   // "3.140000"

Pemformatan Nombor Titik Terapung Lalai

to_string pada double menggunakan enam tempat perpuluhan. Untuk kawalan tepat, gunakan std::stringstream dengan std::fixed dan std::setprecision, atau std::format dalam C++20.

std::stoi: Rentetan kepada int

Huraikan integer dengan std::stoi. Ia mengabaikan ruang kosong di hadapan dan berhenti pada aksara pertama yang bukan digit.

int n = std::stoi("42");        // 42
int m = std::stoi("  -7abc");   // -7 (stops at 'a')

Membaca Kedudukan Hujung

Hantar penuding untuk menerima indeks tempat penghuraian berhenti — berguna untuk menghuraikan rentetan bercampur.

std::string s = "42px";
size_t pos;
int n = std::stoi(s, &pos);
std::cout << pos;  // 2  (parsed "42", stopped at 'p')

Stoi Mencetuskan Pengecualian untuk Masukan Tidak Sah

Jika tiada digit ditemui, stoi mencetuskan std::invalid_argument. Jika nombor melimpah, ia mencetuskan std::out_of_range.

try {
    int x = std::stoi("not_a_number");
} catch (const std::invalid_argument& e) {
    std::cout << "Parse failed";
}

Penukaran Asas

Argumen ketiga memilih asas, iaitu 2 hingga 36. Hantar 0 untuk mengesan asas secara automatik daripada awalan.

int hex = std::stoi("ff", nullptr, 16);    // 255
int bin = std::stoi("1010", nullptr, 2);   // 10
int auto_detect = std::stoi("0xff", nullptr, 0); // 255

stol stoll stoul stoull

Varian untuk jenis integer yang lain:

  • std::stol — long
  • std::stoll — long long
  • std::stoul — unsigned long
  • std::stoull — unsigned long long

stof stod stold

Varian nombor titik terapung untuk float, double dan long double.

double d = std::stod("3.14159");
float f = std::stof("2.71");

C++17 std::from_chars: Tanpa Pengecualian

std::from_chars menghuraikan tanpa mencetuskan pengecualian. Ia mengembalikan struktur dengan ec (kod ralat) dan ptr (kedudukan akhir penghuraian) — pilihan yang lebih baik dalam gelung panas.

#include <charconv>
std::string s = "42";
int val;
auto result = std::from_chars(s.data(), s.data() + s.size(), val);
if (result.ec == std::errc{}) {
    // success
}

C++17 std::to_chars: Tanpa Peruntukan Memori

Kebalikan from_chars — tulis nombor ke dalam penimbal tanpa membuat peruntukan memori. Inilah penukaran terpantas yang tersedia dalam pustaka standard.

Semakan Pantas

Pengecualian manakah yang dicetuskan oleh std::stoi("abc")?

Ringkasan

std::to_string menukar nombor kepada rentetan; std::stoi dan rakan-rakannya menghuraikan rentetan kepada nombor. Kedua-duanya mencetuskan pengecualian apabila gagal — gunakan std::from_chars untuk penghuraian berprestasi tinggi tanpa pengecualian.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Penukaran Rentetan: to_string dan stoi” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Penukaran Rentetan: to_string dan stoi”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penukaran Rentetan: to_string dan stoi”?

Tukar antara rentetan dan jenis berangka dengan selamat menggunakan std::to_string, std::stoi dan std::stod. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Penukaran Rentetan: to_string dan stoi” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. std::string berbanding Tatasusunan Aksara Gaya C
  2. Operasi Rentetan: concat substr find replace
  3. Aliran Rentetan stringstream untuk Penghuraian
  4. Penukaran Rentetan: to_string dan stoi
← Kembali ke C++ Academy