text.c_str()
возвращает constchar *
. Вы не может использовать его для изменения содержимого строки, никак. Он существует только для того, чтобы вы могли передавать строковые данные старым функциям C API без необходимости делать копию. Вам не разрешено вносить изменения, потому что не существует способа, чтобы строковый объект, содержащий данные, мог узнать о них, и поэтому это позволит вам разбить инварианты строки.
Кроме того, std::getline
принимает совершенно разные параметры. (Вы бы это знали, если бы вы взяли две секунды, чтобы ввести «std :: getline» в Google.) Ошибка означает то, что она говорит: «никакая соответствующая функция для вызова» означает «вы не можете вызвать функцию с такими типами параметров ", потому что каждая перегрузка функции принимает что-то другое (и несовместимо).
std::getline
принимает эти параметры:
- поток. Вы должны передать это, потому что иначе он не знает, где читать.
- Строковый объект для чтения.NOT буфер символов.
- Необязательный символ разделителя строк (тот же, что и функция члена getline).
0 Наверх of ↑ "cin.getline". То, что вы вызываете, является функцией-членом «getline» объекта «cin» - глобальная переменная, которая определяется для вас, когда вы #include <iostream>
. Обычно мы ссылаемся на это в соответствии с тем, в каком классе определена функция - таким образом, std::istream::getline
.
std::istream::getline
принимает эти параметры:
- Буфер обугленного.
- Необязательно, разделитель строк.
Он не нуждается в параметре потока, поскольку он является функцией-членом потока: он использует любой поток, с которым мы его вызывали.
Я предполагаю, что вы имеете в виду 'string text;' not 'text string;'. – aschepler
Один вопрос на вопрос, пожалуйста. – aschepler