Jawaban:
The stringkelas memiliki konstruktor yang mengambil C-string NULL-dihentikan:
char arr[ ] = "This is a test";
string str(arr);
// You can also assign directly to a string.
str = "This is another string";
// or
str = arr;
"hello world" adalah array. Jika Anda menggunakannya sizeof("hello world")akan memberi Anda ukuran array (yaitu 12), daripada ukuran pointer (kemungkinan 4 atau 8).
stringkonstruktor tidak akan bekerja dengan, misalnya, argumen string berlalu dinyatakan sebagai unsigned char * buffer, sesuatu yang sangat umum dalam menangani aliran byte perpustakaan.
std::string str(buffer, buffer+size);tetapi mungkin lebih baik untuk tetap menggunakan std::vector<unsigned char>dalam kasus itu.
stradalah tidak seorang mualaf-fungsi di sini. Ini adalah nama variabel string. Anda dapat menggunakan nama variabel lainnya (mis string foo(arr);.). Konversi dilakukan oleh konstruktor std :: string yang disebut secara implisit.
Solusi lain mungkin terlihat seperti ini,
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
yang menghindari menggunakan variabel tambahan.
cout << "test:" + std::string(arr);
string aString(someChar);?
Ada masalah kecil yang terlewat dalam jawaban terpilih. Yaitu, array karakter dapat berisi 0. Jika kita akan menggunakan konstruktor dengan parameter tunggal seperti yang ditunjukkan di atas, kita akan kehilangan beberapa data. Solusi yang mungkin adalah:
cout << string("123\0 123") << endl;
cout << string("123\0 123", 8) << endl;
Output adalah:
123
123 123
std::stringsebagai wadah untuk data biner dan tidak dapat memastikan bahwa array tidak mengandung '\ 0'.
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main ()
{
char *tmp = (char *)malloc(128);
int n=sprintf(tmp, "Hello from Chile.");
string tmp_str = tmp;
cout << *tmp << " : is a char array beginning with " <<n <<" chars long\n" << endl;
cout << tmp_str << " : is a string with " <<n <<" chars long\n" << endl;
free(tmp);
return 0;
}
DI LUAR:
H : is a char array beginning with 17 chars long
Hello from Chile. :is a string with 17 chars long
const char*, sehingga Anda bisa meneruskannya dengan string literal atau char array (yang meluruh ke sana).