上周我得到了一个写一个函数的作业:该函数获取一个string
和一个char
值,并且应该将字符串分成两部分,在第一次出现现有字符之前和之后。
该代码有效,但我的老师告诉我再做一次,因为它的代码写得不好。但我不明白如何让它变得更好。到目前为止,我知道用空格定义两个字符串并不好,但否则我会超出范围异常。由于字符串输入发生变化,因此字符串大小每次都会发生变化。
#include <iostream>
#include <string>
using namespace std;
void divide(char search, string text, string& first_part, string& sec_part)
{
bool firstc = true;
int counter = 0;
for (int i = 0; i < text.size(); i++) {
if (text.at(i) != search && firstc) {
first_part.at(i) = text.at(i);
}
else if (text.at(i) == search&& firstc == true) {
firstc = false;
sec_part.at(counter) = text.at(i);
}
else {
sec_part.at(counter) = text.at(i);
counter++;
}
}
}
int main() {
string text;
string part1=" ";
string part2=" ";
char search_char;
cout << "Please enter text? ";
getline(cin, text);
cout << "Please enter a char: ? ";
cin >> search_char;
divide(search_char,text,aprt1,part2);
cout << "First string: " << part1 <<endl;
cout << "Second string: " << part2 << endl;
system("PAUSE");
return 0;
}