タイトルが言ったように、scanfでC++文字列を読み取る方法があるかどうか興味があります。
私は各文字を読み、それを適切な文字列に挿入できることを知っていますが、次のようなものが欲しいです:
_string a;
scanf("%SOMETHING", &a);
_
gets()
も機能しません。
前もって感謝します!
gets()
が使用される状況はありません! gets()
を使用するのはalwaysであり、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()
を逆にする必要がある可能性がありますフォーマット文字列に.
が欠落している可能性があります)。結果のstd::string
には終端のヌル文字が含まれ、そのサイズは変更されないことに注意してください。
もちろん、if (std::cin >> str) { ... }
を使用するだけですが、それは別の質問です。
これはうまくいく
char tmp[101];
scanf("%100s", tmp);
string a= tmp;