sscanfが解決する(文字列から物を抽出する)という問題があります。sscanfはタイプセーフではなく、古くて恐ろしいので、私は好きではありません。私は賢くなり、C++標準ライブラリのより新しい部分を使用したいと思っています。代わりに何を使用すればよいですか?
29995 次
5 に答える
40
試してみてくださいstd::stringstream
:
#include <sstream>
...
std::stringstream s("123 456 789");
int a, b, c;
s >> a >> b >> c;
于 2009-06-23T15:22:09.587 に答える
7
ほとんどのジョブでは、標準ストリームがそのジョブを完全に実行します。
std::string data = "AraK 22 4.0";
std::stringstream convertor(data);
std::string name;
int age;
double gpa;
convertor >> name >> age >> gpa;
if(convertor.fail() == true)
{
// if the data string is not well-formatted do what ever you want here
}
より複雑な解析のためのより強力なツールが必要な場合は、RegexまたはBoostのSpiritを検討することもできます。
于 2009-06-23T23:03:11.580 に答える
2
含めるsstream
と、文字列のストリームを提供するstringstreamクラスにアクセスできるようになります。これが必要です。Roguewaveには、その使用方法に関するいくつかの良い例があります。
于 2009-06-23T15:23:11.147 に答える
0
本当にストリームを使用したくない場合(読みやすさの点で優れています)、StringPrintfを使用できます。
その実装はFollyにあります。
https://github.com/facebook/folly/blob/master/folly/String.h#L165
于 2013-08-07T19:12:44.187 に答える
-1
fgetsまたはstrtol
于 2009-06-23T15:16:01.457 に答える