Для вывода объекта класса string с помощью printf можно воспользоваться методом c_str()
std::string str = "ala";
printf("%s", str.c_str());
Но этот метод, конечно, нельзя использовать для записи строки с помощью scanf. Есть ли какие-то возможности для записи в string напрямую, без использования дополнительного массива char?
Хотя придумать всегда возможно:
string s;
s.reserve(100);
scanf("%99s", const_cast<char*>(s.c_str()));
s = string(s.c_str());
cout << s;
Формально начиная с C++17, string::data() возвращает char*, т.е. вроде бы можно... Но только все равно потом надо напильником... - чтоб, например, правильно длина возвращалась.
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main() {
string s(10,' ');
strcpy((char*)s.data(),"Hello");
s.resize(5);
cout << s << endl;
cout << s.length() << endl;
return 0;
}
https://ideone.com/ioUGIa
Сборка персонального компьютера от Artline: умный выбор для современных пользователей