c++在c的char类型基础上引入了string类,从而更加方便地对字符串进行操作。但是如果是不会使用string类也会带来很多麻烦。在自己编码的基础上总结了几点误区。
1、char*类型与string类型的相互转换
从char*到string,需要调用string类的构造函数
如:char* a; string s(a);
从string到char*,需要使用string类的c_str()函数
如:string s = “hello”, const char* c = s.c_str();
2、一个特殊错误
单步调试没问题,但是一运行就崩溃
1 2 3 4 5 6 7 8 9 10 11
| string str; i=0; freopen("test_without_punctuation.txt", "r", stdin); char c; while( scanf("%c", &str[i]) != EOF) { if(str[i] >= 'a' && str[i] <= 'z') total_len += MC[str[i]-'a'].length(); ++i; }
|
1 2 3 4 5 6 7 8 9 10 11 12
| string str; i=0; freopen("test_without_punctuation.txt", "r", stdin); char c; while( scanf("%c", &c) != EOF) { str+=c; if(str[i] >= 'a' && str[i] <= 'z') total_len += MC[str[i]-'a'].length(); ++i; }
|
原因可能在于对string类型进行读入的时候,即使用scanf()时,string不支持对单个字符的读入!