今日の文字列傍受の経験を共有してください。
今日のエラー記録:
文字列の特定の「部分文字列」を最後までインターセプトした後、1つを共有します
例はタイトルのようなものです。
文字列内の文字列「I」の後のすべての文字列をインターセプトします:「aaabbb ccc、I love CSDN!」。
[例の文字列には文字「I」が1つしかありませんが、真実は同じです]
#include <iostream>
using namespace std;
int main()
{
string str = "aaa bbb ccc , I love CSDN !";
int pos = str.find("I"); // 在字符串str中找到字符串 "I" 出现的位置
string str2 = str.substr(pos); // 在字符串str中,从"I" 出现的位置开始截取至结束
cout <<"截取后的字符串为:" << str2.c_str() << endl;
}
出力:
截取后的字符串为:I love CSDN !
概要:str.substr(pos);は、posの位置から文字列の最後のビットまでの文字列を表します。
2つを共有し、文字列変数の特定のセグメントをインターセプトします
例はタイトルです:
文字列: "aaa bbb ccc、I love CSDN!"では、14番目の位置から13文字がインターセプトされます。
#include <iostream>
using namespace std;
int main()
{
string str = "aaa bbb ccc , I love CSDN !";
string str2 = str.substr(14,13); // 14表示要截取的字符串的开始的位置,13代表要截取的字符串的长度。
cout << "截取后的字符串为:" << str2.c_str() << endl;
}
出力:
截取后的字符串为:I love CSDN !
要約:str.substr(pos、n); posはインターセプトされる文字列の開始位置を表し、nはインターセプトされる文字列の長さを表します。
3つ共有し、c_str()を補足します
注意深い学生は、文字列を出力すると、このように出力されることを発見したと推定されます
str2.c_str()
.c_strが最後に追加されるのはなぜですか?
追加しないと、次のようなエラーが報告されるためです。
错误 C2679 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
理由は次のとおりです。文字列型にオーバーロード<<記号がありません
したがって、文字列を出力するときは、c_str()メソッドを呼び出すことで解決できます。
4つを共有し、find()を補足します
Str.find( "I");は上記の共有で使用されます。
文字列「I」の最初の出現位置を返します
終わり:
共有することは、問題への理解を深める方法でもあります。包括的ではないかもしれませんが、間違いなく便利であり、今後も改善されていきます〜