C/C++

Передача строк в функцию С++

У меня есть некая программка. Я ввожу строку (объявляю это в главной функции (main)) и есть функция которая должна считать эту строку и обработать её. Вопрос в том, как мне передать вводимую строку в функцию чтобы она могла её считать?
при объявлении функции в скобочках напишите.

void f(string str)
{
...
}

...
int main()
{
...
string s = "abc";
f(s);
}
Валентин Седунов
Валентин Седунов
2 179
Лучший ответ
// В зависимости от поведения программы существует три правильных способа передавать строку в качестве параметра, вот они...

#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
Андрей Королев
Андрей Королев
75 320
Сишные строки (судя по твоим предыдущим вопросам) передаешь как char *s или char s[].
Но использовать их в C++ -как телегу вместо автомашины.
Объявляй в main() строку как:
- массив символов, например, char arr[25];
или
- константу, например, char *str="text";

Объявляй функцию обработки строки так:
void strfunc(char *str) {..};

Передавай в функцию массив char arr[25] так: strfunc(arr);
Передавай в функцию текстовую константу так: strfunc(str);
Алексей Галкин
Алексей Галкин
37 945
void dayStroku (string stroka)
{
...
}

void main()
{
string str;
....
dayStroku (str);
}
~~~ 8-Lvl-4 ~~~
~~~ 8-Lvl-4 ~~~
1 607
Напиши свой класс для строки.
Bogdan Kurochka
Bogdan Kurochka
363