得到一个双字符串c ++

时间:2013-07-18 11:10:54

标签: c++ string double

我正在寻找一种有效的方法来在c ++中获取双字符串。我现在cstring为double函数,但我不能使用它,因为这个字符串是以下格式:

DOUBLE - SPACE - REST OF STRING THAT I ALSO NEED TO SAVE.

问题是double可以有不同的大小,所以如何才能有效地获得double,并且我仍然能够保存其余的字符串。

3 个答案:

答案 0 :(得分:4)

std::istringstream s( theString );
s >> theDouble;

s现在包含字符串的其余部分,可以轻松提取。

答案 1 :(得分:1)

使用istringstream读取双精度值,忽略一个字符(预期空格),然后读取其余部分。

string s = "1.11 my string";

double d;
string rest;

istringstream iss(s);
iss >> d;
iss.ignore(); // ignore one character, space expected.
getline(iss, rest, '\0');

答案 2 :(得分:0)

如果您的输入具有固定格式。你可以先用空间拆分它。然后你有以下内容:

DOUBLE
REST OF STRING THAT I ALSO NEED TO SAVE.

分割:

std::string str = "3.66 somestring";
std::stringstream ss(str);
std::string buffer;
while(std::getline(ss, buffer, ' ')) {
  // add necessary data to containers...
}

现在您可以使用std::atof来解析双倍。

编辑:添加拆分代码: