web-dev-qa-db-ja.com

scanfでC ++文字列を読み取る

タイトルが言ったように、scanfでC++文字列を読み取る方法があるかどうか興味があります。

私は各文字を読み、それを適切な文字列に挿入できることを知っていますが、次のようなものが欲しいです:

_string a;
scanf("%SOMETHING", &a);
_

gets()も機能しません。

前もって感謝します!

20
Vlad Tarniceru

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) { ... }を使用するだけですが、それは別の質問です。

17
Dietmar Kühl

これはうまくいく

char tmp[101];
scanf("%100s", tmp);
string a= tmp;
28
Patato