首页 / C++ / c++ string
c++ string
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++ string,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4302字,纯文字阅读大概需要7分钟。
内容图文
![c++ string](/upload/InfoBanner/zyjiaocheng/642/91dffef509de4e36a640eaaec77ed906.jpg)
1. string初始化
-
string
类是模板类:typedef basic_string<char> string
-
使用
string
类要包含头文件<string>
-
string
对象初始化的方法1. string s1("Hello"); 2. string month = "March"; 3. string s2(8, 'x'); note:可以将字符赋值给string对象 string s = 'c' // 错误,不能用字符来初始化 string s; s = 'n' // 正确
2. string的基本操作
-
string
对象的长度用成员函数length()
读取;string s("Hello"); cout << s.length() << endl; // 5
-
string
类支持流读取运算符string stringObject; cin >> stringObject;
-
string
支持getline()
函数读取string s; getline(cin, s); // 读取一整行,赋值给s
-
string
赋值语句string s1("cat"), s2; s2 = s1; // '='赋值 s2.assign(s1) // assign成员函数赋值 s2.assign(s1, 1, 3) // 从s1中下标为1的字符开始复制3个字符给s2
-
逐个访问
string
对象中的字符string s1("Hello"); for (int i = 0; i < s1.length(); i++) { cout << s1.at(i) << endl; } // 成员函数 at 会做范围检查,若超出范围,会抛出 out_of_range 异常
-
string
的连接string s1("good"), s2(" morning"); // 1. 用 + 运算符连接字符串 s1 += s2; //s1 : "good morning" // 2. 用成员函数 append 连接字符串 s1.append(s2); //s1 : "good morning" s2.append(s1, 3, s1.size()); //从下标为3开始,s1.size()字符,字符串内没有 //足够字符时, 则复制字符串最后一个字符
-
string
的比较1. 用关系运算符比较 string的大小, 返回值都是 bool 类型 string s1("hello"), s2("hello), s3("hell"); bool b = (s1 == s2); // true bool b = (s1 == s3); // false bool b = (s1 > s3); // true bool b = (s1 != s3); // true 2. 用成员函数 compare 比较 string 的大小 string s1("hello"), s2("hello), s3("hell"); int f1 = s1.compare(s2); // 0 int f2 = s1.compare(s3); // 1 int f3 = s1.compare(s1); // -1 int f4 = s1.compare(1, 2, s3, 0, 3); // -1 s1 1-2; s3 0-3 int f5 = s1.compare(0, s1.size(), s3); // 1 s1 0-end
-
string
的子串substr
函数string s1("hello world"), s2; s2 = s1.substr(4, 5); // 从下标4开始 数5个字符 cout << s2 << endl; // "o wor"
-
string
交换swap
函数string s1("hello, world"), s2("really"); s1.swap(s2); // s1 与 s2 交换
-
寻找
string
中的字符find
rfind
find_first_of
find_last_of
函数string s1("hello, world"); s1.find("lo"); // 在 s1 中查找 "lo" 第一次出现的地方。 // 若找到, 返回"1o"开始的位置, 否则返回 string::npos s1.find("ll", 1) // 第二个参数可以指定开始查找的位置 s1.rfind("lo"); // 从后往前找, 其它与 find 函数一样 s1.find_first_of("abcd");//查找 "abcd" 中任何一个字符第一次出现的地方 //若找到则返回找到字符的位置,否则返回string::npos s1.find_last_of("abcd"); //查找 "abcd" 中任何一个字符最后一次出现的地方 //若找到则返回找到字符的位置,否则返回string::npos
-
删除
string
中的字符erase
函数string s1("Hello world"); s1.erase(5); // 去掉下标5及之后的字符 s1 -> hello s1.length(); // -> 5
-
替换
string
中的字符replace
函数string s1("Hello world"); s1.replace(2, 3, "haha"); // 将s1中下标2开始的 3个字符换成 "haha" // s1 -> "hehaha world" s1.replace(2, 3, "haha", 1, 2) //将s1中下标2开始的 3个字符换成 "haha" 中下标 1开始的2个字符 // s1 -> heah world
-
在
string
中插入字符insert
函数string s1("Hello world"); string s2("show insert"); s1.insert(5, s2); //将s2插入s1下标5的位置 s1 -> "helloshow insert world" s1.insert(2, s2, 5, 3); //将s2中下标5开始的3个字符插入s1下标2的位置 //s1 -> "heinsllo world"
-
将
string
转换成 c语言式 字符串c_str
data
函数string s1("hello world"); printf("%s\n", s1.c_str()); // c_str()函数,返回传统的const char* 类型的字符串, 以'\0'结尾 const char* p1 = s1.data(); // data函数返回char* 类型的字符串,对s1的修改可能会使p1出错 for (int i = 0; i < s1.length(); i++) { printf("%c", *(p1 + 1)); } // -> "hello world"
3. 字符串流处理
-
字符串输入流
istringstream
string input("Input test 123 4.7 A"); istringstream inputString(input); string string1, string2; int i; double d; char c; long L; inputString >> string1 >> string2 >> i >> d >> c; // string1 -> Input // string2 -> test // i -> 123 // d -> 4.7 // c -> A if(inputString >> L) { cout << "long\n"; } else { cout << "empty\n"; } // 输出 -> empty
-
字符串输出流
ostringstream
ostringstream outputString; int a = 10; outputString << "This" << a << "ok" << endl; cout << outputString.str(); // 输出 -> This 10ok
内容总结
以上是互联网集市为您收集整理的c++ string全部内容,希望文章能够帮你解决c++ string所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。