我正在寻找一种从 C++ 中的字符串中获取双精度的有效方法。我现在使用 cstring to double 函数,但是我不能使用它,因为这个字符串是以下格式:
DOUBLE - SPACE - REST OF STRING THAT I ALSO NEED TO SAVE.
问题是双精度可以有不同的大小,所以我怎样才能有效地获得双精度并且我仍然能够保存字符串的其余部分。
std::istringstream s( theString );
s >> theDouble;
s
现在包含字符串的其余部分,可以轻松提取。
用于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');
如果您的输入有固定格式。你可以,首先用空格分割它。然后你有以下内容:
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
来解析您的双精度数。
编辑:添加拆分代码: