64,631
社区成员
发帖
与我相关
我的任务
分享
int i;
string s;
cin >> i >> s;
#include <iostream>
#include <string>
#include <locale>
class delimiter : public std::ctype<char>
{
public:
delimiter( const std::string& characters )
: std::ctype<char>( creatTable( characters ), false ){ }
private:
std::ctype_base::mask const* creatTable( const std::string& characters )
{
std::ctype_base::mask* table = new std::ctype_base::mask[ std::ctype<char>::table_size ];
std::fill_n( table, std::ctype<char>::table_size, std::ctype_base::mask( ) );
for( std::string::size_type i = 0; i < characters.size( ); ++i )
{
table[ characters[ i ] ] = std::ctype_base::space;
}
return table;
}
};
int main( void )
{
delimiter delimiters( ",-" );
std::cin.imbue( std::locale( std::locale( ), &delimiters ) );
int a;
std::string b;
while ( std::cin >> a >> b )
{
std::cout << "a = " << a << std::endl
<< "b = " << b << std::endl;
}
return 0;
}
std::cin >> i >> sep >> >> s;
吗?
这样处理不鲁棒吧。如果数据是
更或者
我想跳过所有的,和-,怎么处理呢,不考虑正则表达式的前提下[/quote]
yeahstd::cin >> i >> sep >> >> s;
吗?
这样处理不鲁棒吧。如果数据是
更或者
我想跳过所有的,和-,怎么处理呢,不考虑正则表达式的前提下
int i;
char sep;
std::string s;
std::cin >> i >.> >> s;
感谢,后面那个一般的处理方法是不是用cin.ignore(10, ',');?[/quote]