用scanf读取C ++字符串
正如标题所说,我很好奇是否有办法用scanf读取C ++字符串。
我知道我可以读取每个char并将其插入到deserved字符串中,但我想要的是:
string a; scanf("%SOMETHING", &a);
gets()
也行不通。
提前致谢!
没有使用gets()
情况! 使用gets()
总是错误的,它从C11中删除并从C ++ 14中删除。
scanf()
不支持任何C ++类。 但是,您可以将scanf()
的结果存储到std::string
:
std::string str(100, ' '); if (1 == scanf("%*s", &str[0], str.size())) { // ... }
我不完全确定在scanf()
指定缓冲区长度的方式以及参数的顺序(参数&str[0]
和str.size()
有可能需要反转str.size()
在格式字符串中缺少.
)。 请注意,生成的std::string
将包含一个终止空字符,并且不会更改其大小。
当然,我只会使用if (std::cin >> str) { ... }
但这是一个不同的问题。
这可以工作
char tmp[101]; scanf("%100s", tmp); string a= tmp;
string temp; scanf("%s",&temp.c_str());
我希望它能奏效!