码迷,mamicode.com
首页 > 编程语言 > 详细

【C++入门一点点】string

时间:2015-04-18 06:18:38      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

/*记录一些C++的一些基本用法吧*/

①输入输出:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7    string cww;
 8    cin>>cww;   //cin>>_-输入
 9    cout<<cww<<endl;   //cout<<_<<endl-输出
10    return 0;
11 }

 

然而,对于含有空格的字符串:

技术分享——开头的空格会被忽略输出后续字符串

技术分享——然而非开头处的空格会终止读取

string类型输入操作符有如下规则:

a.读取并忽略开头所有空白字符(“\n”,“\t”,“ ”,etc.).

b.读取字符直至再次遇见空白字符会终止读取.

 

那么要读取完整的含有空白字符的句子要怎么办呢?

还有getline呀:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7    string cww;
 8    getline(cin,cww);   //getline(cin,str)读取整行字符串
 9    cout<<cww<<endl;
10    return 0;
11 }

技术分享——这样整行都可以完整输出.

 

②string的操作

 1  1 // string constructor
 2  2 #include <iostream>
 3  3 #include <string>
 4  4 using namespace std;
 5  5 
 6  6 int main ()
 7  7 {
 8  8   string s0 ("Initial string");
 9  9 
10 10   // constructors used in the same order as described above:
11 11   string s1;
12 12   string s2 (s0);  //s2是s0的副本
13 13   string s3 (s0, 8, 3);  //从第八个字符(由0开始计数)开始
14 14   string s4 ("A character sequence", 6);  //输出到第六个字符截止(从0计数,不含第六个)
15 15   string s5 ("Another character sequence");  
16 16   string s6 (10, x);  //输出10个x
17 17   string s7a (10, 42);  //ascii(42)即‘*’
18 18   string s7b (s0.begin(), s0.begin()+7);  //begin开始的字符起向后数7个输出
19 19 
20 20   cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;
21 21   cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6: " << s6;
22 22   cout << "\ns7a: " << s7a << "\ns7b: " << s7b << endl;
23 23   return 0;
24 24 }

 运行结果:

技术分享

 1  // string assigning
 2 #include <iostream>
 3 #include <string>
 4 using namespace std;
 5 
 6 int main ()
 7 {
 8   string str1, str2, str3;
 9   str1 = "Test string: ";   
10   str2 = x;               
11   str3 = str1 + str2;      //将两个str连接成一个 
12   cout << str3  << endl;
13   return 0;
14 }

运行结果:

技术分享

 1 // string::operator[]
 2 #include <iostream>
 3 #include <string>
 4 using namespace std;
 5 
 6 int main ()
 7 {
 8   string str ("Test string");
 9   int i;
10   for (i=0; i < str.length(); i++)   //str.length()-字符串长度
11   {
12     cout << str[i];
13   }
14   return 0;
15 }

运行结果:

技术分享

 

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main ()
 6 {
 7   string str="i am cww";
 8   cout<<str.empty()<<"\n";  //str.empty()判断是否为空串,是-1,否-0 
 9   cout<<str.size()<<endl;   //str.size()得字符串的长度,包括空格数 
10   return 0;
11 }

运行结果:

技术分享

 

还有诸多用法,参考这位博客君→http://www.cnblogs.com/ggjucheng/archive/2012/01/03/2310941.html

 

关于下标:

 1  1 #include <iostream>
 2  2 #include <string>
 3  3 using namespace std;
 4  4 
 5  5 int main ()
 6  6 {
 7  7   string str="i am cww";
 8  8   for(string::size_type i=0;i!=str.size();i++)  //下标类型为unsigned类型string::size_type,不是整型,可能会出现负数(?)
 9  9     cout<<str[i]<<endl; 
10 10   return 0;
11 11 }

就像c语言数组一样,不过这里下表定义必须是unsigned,不过用int定义其实也能成功编译,是为了预防不安全的情况吧.

 

【C++入门一点点】string

标签:

原文地址:http://www.cnblogs.com/suzyc/p/4436471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!