加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C++字符串和字符的分割与转换

发布时间:2020-12-15 04:47:15 所属栏目:百科 来源:网络整理
导读:今日一些小见解。 //未初始化错误 string a; a[0]='1'; //未初始化错误 string *q; q[0]="a"; 想单独为未初始化的string 逐个增加元素 : string str; str.pushback("a"); char与string不能直接转换,但是 string[i]的类型就是char const char* 和char* 之

今日一些小见解。

//未初始化错误

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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读