c++ - 如何使用 stringstream 将字符串同时转换为 int 和 double

标签 c++ stringstream

如何使用 stringstream 将字符串转换为 int 和 double?

输入将是四位数字,然后是一个句点,然后是另外四位数字 (####.####),我需要将前四位数字提取到一个 int 中,然后整个事情需要是双胞胎,但我不确定从这里去哪里

    string s;
    cin >> s;
    stringstream ss;
    ss << s;
    int num1; // needs to be int
    ss.str(s);
    ss >> num1;
    ss.clear();
    ss << s;
    double num2; // needs to be a double
    ss >> num2;

例如,假设我们在输入中有 1234.5678。读取发生后,我想在 num1 中有 1234,在 num2 中有 1234.5678

最佳答案

不需要解析两次,假设数字只有 4 位并且不是很大,double 应该能够精确地保存整数部分,因此您可以在之后将其截断为 int。

stringstream ss("1234.5678");
double foo;
ss >> foo;
int bar = static_cast<int>(foo);

关于c++ - 如何使用 stringstream 将字符串同时转换为 int 和 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659379/

相关文章:

c++ - 为什么 std::enable_if 需要第二种模板类型?

c++ - 从 `stringstream` 读取二进制数据

delphi - 如何下载 Unicode 文件并将其加载到 TTreeView 中?

c++ - Stringstream清零麻烦

C++ 读取元数据文件,并处理由空格和 : 混合分隔的字段

c++ - 编译器就像未定义预处理器指令一样工作

c++ - 使用可变模板中的参数定义多个方法

c++ - Linux 和 Windows 构建的应用程序之间的 OpenCV 行为差异

c++ - `invalid initialization of non-const reference` 是什么意思?

c++ - 你如何清除一个 std::ostringstream 实例以便它可以被重用?