我不想声明字符数组。我想声明字符串。并使用scanf和printf获取输入并显示该字符串的输出。我试图这样做,如下所示,但它没有正常工作。如何正确地做到这一点?
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
scanf("%s", str.c_str());
printf("%s", str.c_str());
return 0;
}
答案 0 :(得分:0)
您正试图在只读的区域中书写,例如str.c_str()。 你想做的是:
std::cin >> str;
或者如果由于特定原因您必须使用scanf。从C ++ 17开始,您可以这样做:
str.data()
返回可修改的内存区域。
编辑:正如@nwp所说,你必须调用str.resize(size),因为在此之前字符串的大小是0。