STL---string

好博客:https://blog.csdn.net/lsh_2013/article/details/46728993

https://www.cnblogs.com/engraver-lxw/p/7581540.html

 

 

 

 

 首先你看到这样一个输入如何办?

  用scanf 

   scanf ("%d:%d:%d - %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);

  scanf的格式化输入可以帮助我们去除出一下东西

  

  用cin

  要注意的是cin遇到空格和回车就不读了

  如果这里用string来读,这里我们一行要用3个string

  cin>>str1>>str2>>str3

  str2是“-”

  

  注意vector<string>q 

  sort(q.begin(),q.end());

  字符串这里是可以直接排序的,同时还可以直接用< = >,比较大小

  原理是每一个字符串每一次都取其中一位字符下来进行比较

  

  来聊聊字符串拼接的问题:

    c++中 cout<<"abc"+"def"<<endl;

    这是会报错的,不允许两个const char *进行拼接

    这里这两个字符串并不是string型的

  要首先声明string str1="abc",str2="bcd"

  str1+str2

  str1+'a' (直接加字符)

  str1+"a" (直接加字符串)

  都是可以的

  但是不能直接加 int 等类型

    如 str1+1 是会报错的  

  

  还有string 上的函数substr

  str.substr(0,5)

  含义为从下标0开始,往后取5个字符

  

  string str;

    我们用getline(cin,str)来读取一行

  用str.find(substr)来查找子串

  如果找到返回第一次出现的字母下标

  否则返回-1

 

 

c++ 中通过to_string()函数可以将实现string 的转变

  

 

 

来讨论一下c++与c如何进行格式化输入

  

   在面对这样的输入时,我们可以直接用scanf进行格式化输入

    没有必要用字符串来保存上述输入

 

    但是遇到了如下情况阁下又如何应对?

  

       这个输入没有上述那个输入如此有规律,我们不能再用scanf来偷懒了

   假设现在我们的目的是一行一行处理,比如3-13 , 13 - 17

   我们需要得到3,13,13,17出来,应该如何得到?

 

  下面我们简化问题,只来讨论每一行如何处理:

    首先用getline(cin,str) 以字符串的形式来保存这一行数据

    然后肯定需要将“,”都去掉

 

    在c中有一种格式化输入的方法sscanf(str,"%s,%s",t1,t2)

      可惜的是sscanf中的str是char*类型

      如何将string类型转换为char*类型呢?可以用函数转化,但是我认为这样处理不太优雅

 

    在c++中有一种格式化输入的方法

      istringstream iss(str)

      这个函数是将str这个string类型的数据转换为流

      然后可以通过getline(iss,t,',') 来格式化输入

         这里说明下getline函数:---->这里有一个好博客

        

    

     根据上述博客中内容我们的iss是输入流,t是保存流中信息的字符串,‘,’是截断符

     

来讨论下c++string中的一些函数

  find函数

    

  字符串转数字函数itor

    一个好博客<----

  

   

   

来讨论下c++/c中文件的使用方法

  文件的打开

    输入文件 :ifstream filename(filepath);

    输出文件:ofstream filename (filepath);

     filename.is_open()

      成功返回为true,否则为false

 

   文件的关闭

    filename.close()

 

   从文件中读取

    getline(filename,str)

    然后操作可以与上述字符串处理一样

 

    到文件中写

    filename<<str<<endl

  

    

posted @ 2022-02-11 20:08  次林梦叶  阅读(35)  评论(0)    收藏  举报