C++字符串和字符的分割与转换
今日一些小见解。 //未初始化错误 string a; a[0]='1'; //未初始化错误 string *q; q[0]="a"; 想单独为未初始化的string逐个增加元素: string str; str.pushback("a"); char与string不能直接转换,但是string[i]的类型就是char const char* 和char* 之间不能直接转换。 const char* p="abcde"; 这样的指针就是指向常量的指针,不能通过指针来修改它所指向的数据.。 因此从string转换的指针也是指向常量的指针。 string str=“world”; const char *cp = str.c_str();//同上,要加const或者等号右边用char* 否则,在调用函数的时候,会显示*const char 和char 之间不兼容*** 因此,二者转换需要一个过渡。 const char* cp = "world"; char* p = new char[100]; strcpy(p,cp); cout << p << endl; 这样就可以通过p来改变原来’‘abcde’'的值了. 由此,string也转变成了char* 。 今日任务是 - 根据昨天的经验,我先单行读入,再分离空行 #include #include #include using namespace std; int main() { string buffer; getline(cin,buffer); stringstream ss(buffer); string str; while (ss >> str) { ...程序主体。 } return 0; } 之后需要处理的就是对string类的str进行能否转换成数字,或者是符号就变成char的转换。 注意这里是可以直接str[0]这么用的。 由此对字符串的输入处理就完成啦! 顺便放一个昨天从文本读入行的对比,真的太像啦。只是多了一个打开文件后,让文件连接流,在调用getline那里是链接,而从缓冲区读入的话,直接就是cin了! string fileName = "retail.dat"; ifstream in; in.open(fileName.data(),ios::in); //将文件流对象与文件连接起来 assert(in.is_open());//如果打开失败,这里会终止运行 string buffer; while (getline(in,buffer))//一次读取文件的一行内容,含空格,为buffer的字符串 { int temp; stringstream ss(buffer); //建立stringstream对象,初始化流内容为buffer所代表的字符串 while (ss >> temp) //从buffer中一次次读取数字存入temp,直到到达字符串流的末尾 { ...对ss进行操作 } } in.close(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |