C/C++
Передача строк в функцию С++
У меня есть некая программка. Я ввожу строку (объявляю это в главной функции (main)) и есть функция которая должна считать эту строку и обработать её. Вопрос в том, как мне передать вводимую строку в функцию чтобы она могла её считать?
при объявлении функции в скобочках напишите.
void f(string str)
{
...
}
...
int main()
{
...
string s = "abc";
f(s);
}
void f(string str)
{
...
}
...
int main()
{
...
string s = "abc";
f(s);
}
// В зависимости от поведения программы существует три правильных способа передавать строку в качестве параметра, вот они...
#include <iostream>
#include <string>
using namespace std;
// По ссылке
void fn(string& s) {
s = "Hello, " + s + "!";
}
// По константной ссылке
void fn(const string& s) {
cout << "Good bay, " << s << "!\n";
}
// По универсальной ссылке
string fn(string&& s) {
return "How are you, " + s + "?";
}
int main() {
string hello = "Yung Trapazoid";
fn(hello);
cout << hello << '\n';
const string name = "Yung Trapazoid";
fn(name);
auto str = fn("Yung Trapazoid");
cout << str << '\n';
system("pause > nul");
}
P.S. Передавать std::string по значению либо по указателю – глупость и извращение.
P.P.S. В ряде случаев полезно использовать std::string_view https://docs.microsoft.com/ru-ru/cpp/standard-library/string-view?view=msvc-160
#include <iostream>
#include <string>
using namespace std;
// По ссылке
void fn(string& s) {
s = "Hello, " + s + "!";
}
// По константной ссылке
void fn(const string& s) {
cout << "Good bay, " << s << "!\n";
}
// По универсальной ссылке
string fn(string&& s) {
return "How are you, " + s + "?";
}
int main() {
string hello = "Yung Trapazoid";
fn(hello);
cout << hello << '\n';
const string name = "Yung Trapazoid";
fn(name);
auto str = fn("Yung Trapazoid");
cout << str << '\n';
system("pause > nul");
}
P.S. Передавать std::string по значению либо по указателю – глупость и извращение.
P.P.S. В ряде случаев полезно использовать std::string_view https://docs.microsoft.com/ru-ru/cpp/standard-library/string-view?view=msvc-160
Сишные строки (судя по твоим предыдущим вопросам) передаешь как char *s или char s[].
Но использовать их в C++ -как телегу вместо автомашины.
Но использовать их в C++ -как телегу вместо автомашины.
Объявляй в main() строку как:
- массив символов, например, char arr[25];
или
- константу, например, char *str="text";
Объявляй функцию обработки строки так:
void strfunc(char *str) {..};
Передавай в функцию массив char arr[25] так: strfunc(arr);
Передавай в функцию текстовую константу так: strfunc(str);
- массив символов, например, char arr[25];
или
- константу, например, char *str="text";
Объявляй функцию обработки строки так:
void strfunc(char *str) {..};
Передавай в функцию массив char arr[25] так: strfunc(arr);
Передавай в функцию текстовую константу так: strfunc(str);
void dayStroku (string stroka)
{
...
}
void main()
{
string str;
....
dayStroku (str);
}
{
...
}
void main()
{
string str;
....
dayStroku (str);
}
Напиши свой класс для строки.
Похожие вопросы
- Передача параметров в функцию по адресу.
- Передача в метод класса указателя на функцию C++
- Передача параметров функцию.
- Задача про строки C++(выполнить нужно внутри 1ой функции)
- Найти максимальный элементы в строке матрицы
- Как реализовать поиск похожей строки в базе данных?
- Не могу разобраться. Функция удаления отрицательных элементов вектора
- Как в функции распечатать двумерный динамический массив в Си
- Как завершить условие в функции?
- Возвращение функции return func(); (Си)