标签:out none string cin 详情 can 字符 error class
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 string t; 7 cin>>t; 8 int len = t.length(),i; 9 10 for(i = 0;i<len;i++) 11 { 12 t[len+i] = t[i]; 13 } 14 t[len*2] = ‘\0‘; 15 cout<<t; 16 return 0; 17 }
一‘执行以上代码后t仍然没被加倍,这是因为‘\0’是字符数组的结束标志符,不是string的!!
‘\0’在字符串内也可以算作一个元素
1 string s = "123456"; 2 s[3]=‘\0‘; 3 cout << s << endl; //A行 4 string str = "12\0456"; 5 cout << str << endl; //B行
A行你以为输出 123,实际输出 123 56 ,因为\0 就是个空字符!
二.另外string s;此时的s是一个空字符串,没有长度
1 char a[20] = {0}; //将 a 数组的全部元素初始化为‘\0‘ 2 string s = "123456"; 3 s.copy(a, 3, 1); //len=3, pos=1 4 cout << a << endl; // 输出:234
可应用于KMP算法的人体病毒检测
string类的坑(string 类的应用和加倍后出现的问题)
标签:out none string cin 详情 can 字符 error class
原文地址:https://www.cnblogs.com/xy2656141474/p/13055659.html