遇见的几个C++中的string 函数

本文深入探讨了C++中字符串erase函数的三种使用方法,包括删除指定位置的字符、删除迭代器指向的字符以及删除两个迭代器之间的字符。通过具体示例展示了erase函数在字符串操作中的应用。

今天遇到了erase()这个函数
erase函数的原型如下:
(1)string& erase ( size_t pos = 0, size_t n = npos );
(2)iterator erase ( iterator position );
(3)iterator erase ( iterator first, iterator last );
也就是说有三种用法:
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str ("This is an example phrase.");
  string::iterator it;

  // 第(1)种用法
  str.erase (10,8);
  cout << str << endl;        // "This is an phrase."

  // 第(2)种用法
  it=str.begin()+9;
  str.erase (it);
  cout << str << endl;        // "This is a phrase."

  // 第(3)种用法
  str.erase (str.begin()+5, str.end()-7);
  cout << str << endl;        // "This phrase."
  return 0;
}

第二个函数
find函数

### C++ 中多行字符串的输入方法 在 C++ 中,可以通过多种方式实现多行字符串的输入。以下是几种常见的方法及其示例: #### 方法一:使用 `std::getline` 函数 `std::getline` 是一种简单而有效的方法,用于从标准输入流中读取整行数据。如果需要连续多次调用该函数,则可以逐行获取用户的多行输入。 ```cpp #include <iostream> #include <string> int main() { std::string line; std::string result; while (std::getline(std::cin, line)) { if (line.empty()) break; // 假设以空行为结束标志 result += line + "\n"; } std::cout << "Input was:\n" << result; return 0; } ``` 上述代码通过循环不断读取每一行的内容并将其拼接起来[^2]。 --- #### 方法二:利用原始字符串字面量(Raw String Literals) 自 C++11 起支持原始字符串字面量功能,可以直接定义跨越多行的字符串而不需额外转义特殊字符。虽然此特性主要用于声明而非动态输入,但在某些场景下仍能间接辅助完成任务。 ```cpp #include <iostream> #include <string> int main() { const std::string rawString = R"(这是第一行. 这是第二行. 这是第三行.)"; std::cout << "Multi-line string example:" << std::endl << rawString; return 0; } ``` 这里展示了如何创建一个多行静态字符串实例[^3]。 --- #### 方法三:借助 `std::istringstream` 当希望解析来自单次大段文本输入中的多个部分时,可以考虑结合 `std::getline` 和 `std::istringstream` 使用。这种方式尤其适合处理复杂的分隔逻辑或格式化需求。 ```cpp #include <iostream> #include <sstream> #include <string> int main() { std::string input; getline(std::cin, input); // 获取一大段输入 std::istringstream stream(input); std::string line; while (std::getline(stream, line, '\n')) { // 自定义分割符'\n' std::cout << "[Line]: " << line << std::endl; } return 0; } ``` 这段程序先一次性接收所有用户键入的数据存入变量 `input` 中,再交由字符串流对象逐步拆解分析每一段子串。 --- #### 方法四:手动连接各独立短句构成整体效果 对于那些严格限定每次仅允许提交固定长度字段的应用场合来说,可通过反复询问直至满足条件为止的方式累积最终结果集。 ```cpp #include <iostream> #include <vector> #include <string> using namespace std; int main(){ vector<string> lines; string temp; cout<<"Enter multiple lines of text. Type 'END' on a new line to finish."<< endl; do{ getline(cin,temp); if(temp!="END") lines.push_back(temp); }while(temp!="END"); cout<<"\nThe entered multiline content:"<<endl; for(auto& s :lines){ cout<<s<<endl; } return 0; } ``` 以上脚本引导使用者持续提供新资料直到遇见特定终止信号才停止收集过程[^4]。 --- ### 总结 综上所述,在实际开发过程中可以根据具体应用场景灵活选用不同的技术手段达成目标——无论是单纯依赖基础库接口还是综合运用高级工具类均各有千秋。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值