cin >> *integerVar >> *charVar;
可以读取输入,例如" 25 b"正确。使用现有字符串执行此操作的最简单方法是什么(我可以通过拆分然后解析每个部分来手动执行此操作,但更好的方法是什么)?
答案 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)
您可以使用stringstream和string(模板)类:
#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);
}