如何在c ++中将字符串解析为多个类型?

时间:2017-02-07 23:17:44

标签: c++ string parsing c++11

cin >> *integerVar >> *charVar;可以读取输入,例如" 25 b"正确。使用现有字符串执行此操作的最简单方法是什么(我可以通过拆分然后解析每个部分来手动执行此操作,但更好的方法是什么)?

4 个答案:

答案 0 :(得分:6)

使用istringstream之类的内容,例如:

#include <string>
#include <sstream>

int main(void)
{
    std::istringstream ss("25 b");
    int x; std::string bstr;

    ss >> x >> bstr;

    return 0;
}

// note that std:istringstream allows ss >> x, but not ss << "some value".
// if you want to support both reading and writing, use a stringstream (which would then support ss >> x as well as ss << "some value")

答案 1 :(得分:5)

使用std::stringstream

std::stringstream myStr{"25 b"};
myStr >> *integerVar >> *charVar;

答案 2 :(得分:4)

您可以使用stringstreamstring(模板)类:

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

int main() {
    std::string s;
    std::getline(std::cin, s);
    std::stringstream ss(s);
    int n;
    char c;
    ss >> n >> c;
    return 0;
}

答案 3 :(得分:0)

您可以使用sscanf与scanf完全相同但使用字符串而不是STD输入

#include<iostream>
#include<stdlib>
#include<stdio>
int main(){
    std::string str;
    char character;
    int intnumber;
    cin >> str;
    sscanf (str.c_str(), "%d%c", &intnumber, &character);
}