将字符串分成三个单独的双打

Mr *_*ous 2 c++ string double

我有一个从文件中读取的一行字符串。字符串:("2021.2 12341.29 42.1")。我需要将这三个数字中的每一个提取到每个值的双精度值中,每个值都由每个空格显示,以暗示一个新数字在那里。数字并不总是具有相同的间距,因为我是为多行这样做的,所以我不能只经过间距中的相同点。这是我到目前为止所拥有的。

string vert; //I already got the read line so here for example I am subing in a value for vert.
vert = "2021.2 12341.29 42.1";
double num1, num2, num3;

for (int i = 0; i < vert.length(); i++){

...
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*zie 6

使用std::istringstream

#include <sstream>
#include <string>
#include <iostream>

int main()
{
   std::string vert = "2021.2 12341.29 42.1";
   double num1, num2, num3;
   std::istringstream strm(vert);
   strm >> num1 >> num2 >> num3;
}
Run Code Online (Sandbox Code Playgroud)

  • 方便的附加组件:在使用您读取的数字之前测试“strm”的状态,以确保您确实从字符串中读取了三个数字。当你得到错误的输入时,像“if (strm &gt;&gt; num1 &gt;&gt; num2 &gt;&gt; num3) { safe to use } else { handle error }”这样的东西可以为你节省大量的调试时间。 (2认同)