用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()); 

我希望它能奏效!