string
使用c_str
string函数然后将C ++ 转换为char数组非常简单strcpy
。但是,该怎么做相反呢?
我有一个char数组,例如:char arr[ ] = "This is a test";
要转换回:
string str = "This is a test
。
string
使用c_str
string函数然后将C ++ 转换为char数组非常简单strcpy
。但是,该怎么做相反呢?
我有一个char数组,例如:char arr[ ] = "This is a test";
要转换回:
string str = "This is a test
。
Answers:
本string
类有一个构造函数一个NULL结尾的C字符串:
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"
中的字符串是数组。如果使用sizeof("hello world")
它,将为您提供数组的大小(即12),而不是指针的大小(可能为4或8)。
string
构造函数将不会工作,例如,一个传递的参数字符串作为申报unsigned char * buffer
,事中的字节流处理库非常普遍。
std::string str(buffer, buffer+size);
,但是std::vector<unsigned char>
在这种情况下最好使用a 。
str
这里不是转换函数。它是字符串变量的名称。您可以使用任何其他变量名称(例如string foo(arr);
)。转换由隐式调用的std :: string的构造函数完成。
另一个解决方案可能看起来像这样,
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
避免使用额外的变量。
cout << "test:" + std::string(arr);
string aString(someChar);
吗?
#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;
}
出:
H : is a char array beginning with 17 chars long
Hello from Chile. :is a string with 17 chars long
const char*
,因此您可以将其传递给字符串文字或char数组(衰减为该字符串)。