簡體   English   中英

C++ 查找/子字符串錯誤

[英]C++ Find/Substring Bug

我制作了一個 c++ 字符串,它將使用 find 和 substring 命令分成子字符串,並且我一直遇到子字符串超過指示的問題。 它們應該是沒有數字的句子。

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main() {
  string questions = "1. pog 2. pog2 3. pog3 4. pog4";
int q1in = questions.find("1.");
int q2in = questions.find("2.");
int q3in = questions.find("3.");
int q4in = questions.find("4.");
int q5in = questions.find("5.");
int q6in = questions.find("6.");
int q7in = questions.find("7.");
string q1 = questions.substr(q1in,q2in);
string q2 = questions.substr(q2in,q3in);
string q3 = questions.substr(q3in,q4in);
string q4 = questions.substr(q4in,q5in);
q1.erase (0,2);
q2.erase (0,2);
q3.erase (0,2);
q4.erase (0,2);
cout << q1 << endl;
cout << q2 << endl;
cout << q3 << endl;
cout << q4 << endl;
}

您正在傳遞下一個 substring 的開始索引,而不是將長度傳遞給substr方法。 嘗試這個

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main() {
  string questions = "1. pog 2. pog2 3. pog3 4. pog4";
int q1in = questions.find("1.");
int q2in = questions.find("2.");
int q3in = questions.find("3.");
int q4in = questions.find("4.");
int q5in = questions.find("5.");
int q6in = questions.find("6.");
int q7in = questions.find("7.");
string q1 = questions.substr(q1in,(q2in-q1in));
string q2 = questions.substr(q2in,(q3in-q2in));
string q3 = questions.substr(q3in,(q4in-q3in));
string q4 = questions.substr(q4in,(q5in-q4in));
q1.erase (0,2);
q2.erase (0,2);
q3.erase (0,2);
q4.erase (0,2);
cout << q1 << endl;
cout << q2 << endl;
cout << q3 << endl;
cout << q4 << endl;
}

substr的第二個參數是長度,而不是索引 - 字符串 class 是古老的,並且有一個有點令人驚訝的接口。 (我已經記不清我錯了多少次了。)

你要

string q1 = questions.substr(q1in, q2in - qin1);

等等。

也可以直接去掉“標簽”,

string q1 = questions.substr(q1in + 2, q2in - qin1 - 2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM