【问题标题】:sscanf to istringstream confusion c++sscanf 到 istringstream 混淆 C++
【发布时间】:2013-02-14 04:49:00
【问题描述】:

我想利用 istringstream 将以下 C 代码转换为 C++:

void test(char *s) {
   int i;
   sscanf(s, "%*s%d", &i);
}

到目前为止我所拥有的是:

void test(char *s) {
   int i;
   istringstream iss(s);
   iss >> s >> i;
}

它会出现错误。我对 istringstream 太陌生了,不知道该怎么做才能解决它。我希望对我的错误有所了解。 s 应该是没有空格的字符串和整数(例如 Good123),我想删除整数并将其放入 i 中。

【问题讨论】:

    标签: istringstream


    【解决方案1】:

    对于初学者,您应该使用不同的变量来存储解析后的字符串。

    void test(char *s) {
       int i;
       string s1;
       istringstream iss(s);
       iss >> s1 >> i;
    }
    

    【讨论】:

    • 试过了,但是它把 s 的内容存储到 s1 中,但是 i 中没有存储 int。
    • 问题是,与 sscanf 不同,istringstream 需要一个空格分隔符。它只非常适合非常简单的解析(甚至比 sscanf 提供的看起来更简单)。我会使用正则表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多