在C语言中,字符串以字符数组或指针的形式存储。而C++中则直接引入string类(注意"s"是小写!)。C风格的字符串很容易转化成C++风格的字符串,反过来却可能引起语法错误。
一、C语言的字符串转化为C++的string对象
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *str = "hello, world!"; //char str[] = "hello, world!";
string str2(str); //string str2 = str;
cout << "C风格:" << str <<endl;
cout << "C++风格:" << str2 <<endl;
return 0;
}
或定义一个String类,如下:
#include <iostream>
#include <string.h>
using namespace std;
class String
{
public:
String(const char *const);
~String();
char* getString() const {return value;}
private:
char* value;
int len;
};
String:: String(const char *const cString)
{
len=strlen(cString);
value=new char[len+1];
int i;
for(i=0;i<len;i++)
{
value[i]=cString[i];
}
value[len]='\0';
}
String:: ~String()
{
delete [] value;
len=0;
}
int main()
{
char *str = "hello, world!"; //char str[] = "hello, world!";
String str2(str); //string str2 = str;
cout << "C风格:" << str <<endl;
cout << "C++风格:" << str2.getString() <<endl;
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string str2("hello, world!");
char *str = str2.c_str();
cout << "C++风格:" << str2 <<endl;
cout << "C风格:" << str <<endl;
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string str2("hello, world!");
const char *str = str2.c_str();
cout << "C++风格:" << str2 <<endl;
cout << "C风格:" << str <<endl;
return 0;
}
运行结果:
本文介绍了如何在C和C++之间进行字符串的相互转换。包括C风格的字符串如何转换为C++的string对象,以及C++的string对象如何转换为C风格的字符串。
2209

被折叠的 条评论
为什么被折叠?



