从800x600中提取800和600

时间:2014-03-11 10:19:41

标签: c++

我有ComboBox,其中包含分辨率值。从800x600开始到1920x1080。我试图从分辨率模式中取出(这个)x(和这个)。我可以从ComboBox中获取选定的值,但我没有按照我的字符串计划。

        comboBox->GetSelectedValue() // i get value here
        std::stringstream buffer;
        buffer << comboBoxValue;
        std::string myBufferResolution = buffer.str();
        size_t Position1 = 0;
        size_t Position2;

        Position2 = myBufferResolution.find("x", Position1);
        myBufferResolution.substr(Position1, (Position2-Position1));
        Position1 = Position2+1;

        std::cout << "Selected resolution is: " << myBufferResolution << std::endl;

std :: cout只打印选定的值但是我想要的,如果我cout comboBox-&gt; GetSelectedValue()我会得到。

如何从800x600,1024x768等获取值?因为我做错了什么

1 个答案:

答案 0 :(得分:5)

string::substr()方法返回新分配的字符串,它不会修改您正在调用它的对象。

所以,它应该是例如:

const std::string width = myBufferResolution.substr(Position1,
                                                    (Position2-Position1));

我认为有更好的方法可以做到这一点(在C中我会使用sscanf(myBufferResolution.c_str(), "%ux%u", &width, &height);)。