Ну, в строке текста может вовсе не оказаться нужных букв, либо буква 'к' может встретиться раньше буквы 'а'. Опять же могут возникнуть проблемы с кодировками. Так под Linux можно написать так:
#include
#include
using namespace std;
int main() {
cout << ">>> ";
string first;
getline(cin, first);
const auto a = first.find("а");
const auto k = first.find("к");
if (a == string::npos || k == string::npos || a > k) {
exit(0);
}
const auto second = string(first.begin() + a, first.begin() + k);
cout << "<<< " << second << endl;
}
А под Windows в русской локализации системы придётся шаманить:
#include
#include
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << ">>> ";
string first;
getline(cin, first);
const auto a = first.find("а");
const auto k = first.find("к");
if (a == string::npos || k == string::npos || a > k) {
exit(0);
}
const auto second = string(first.begin() + a, first.begin() + k);
cout << "<<< " << second << endl;
system("pause > nul");
}
#include <string>
int main() {
std::string sentence = "Из заданного предложения, начиная с первой встретившейся буквы 'а', переписать в новый массив все символы до первой встретившейся буквы ' к'.";
std::string newSentence;
bool foundA = false;
for (char c : sentence) {
if (c == 'а')
foundA = true;
if (foundA) {
if (c != 'к')
newSentence += c;
else
break;
}
}
std::cout << newSentence << std::endl;
return 0;
}Выводит некорректно, где ошибся?