C++中将string转为数组:
·
第一种:(利用指针进行操作)
因为string可以看作是数组构成的串,所以直接定义一个char的指针,指过去就可以了。
- 示例如下:
int main() {
string s1;
cout<<"Please input a string:";
cin >> s1;
const char * k = NULL;
k = s1.c_str(); //让指针指向s1的位置
cout << k[0] << endl;
for (int i = 0; k[i] != '\0'; i++) {
cout << k[i];
}
system("pause"); //暂停一下以便查看
return 0; //标准的返回退出
}
复习:
1.const char * ——指针的指向可以改变,但是指针指向内存的值不可以改变;
2…char const * ——指针的指向不可以改变,但是指针指向内存的值可以改变;
string.c_str是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。
c_str函数的返回值是const char的,不能直接赋值给char,所以就需要我们进行相应的操作转化。
c_str()返回的是一个临时指针,不能对其进行操作。 所以需要使用const char * 类型的常量指针来对其进行接收,负责会报错;
第二种:(拷贝复制字符串到数组进行操作)
比较机械的,先定义一个字符数组,然后将字串的内容“复制”进去。这种方法更规矩一些,也更安全一些:
int main() {
string s;
char s1[20];
cout << "Please input a string:";
cin >> s;
strcpy(s1, s.c_str()); //strcpy()函数的作用是将指定的字符串进行拷贝,该函数无法拷贝string对象,只能拷贝string对象的c_str;
cout << s1[0]<<endl;
for (int i = 0; s1[i] != '\0'; i++) {
cout << s1[i];
}
system("pause"); //暂停一下以便查看
return 0; //标准的返回退出
}
此方法与上述方法类似,但是这种方法用了strcpy()方法将字符串内容进行拷贝,所以更为安全一些
注意:
此方法中的的s1为数组名,代表了数组的首地址;
第三种:直接用字符串进行数组类型的操作
- 字符串和数组进行随时切换:
int main() {
string s;
cout<<"please input a string:";
cin >> s;
cout << s << endl;
cout << s[0]<<endl;
for (int i = 0; s[i] != '\0'; i++) {
if (s[i] == 'm') {
break;
}
cout << s[i];
}
system("pause"); //暂停一下以便查看
return 0; //标准的返回退出
}
注意:
C++中的字符串数组不需要像C语言一样利用for循环进行输入,只需利用数组名就可以像字符串一样进行赋值操作;
int main() {
char s[20];
cin >> s;
for (int i = 0; s[i] != '\0'; i++) {
cout << s[i];
}
system("pause"); //暂停一下以便查看
return 0; //标准的返回退出
}
更多推荐
所有评论(0)