如何跨平台比较单个多字节字符常量?
How do I compare single multibyte character constants cross-platform?
因为我正在编写一个跨平台应用程序,所以我希望我的代码可以在两个平台上运行。
在Windows中,我使用这段代码来比较2个单个字符。
for( int i = 0; i < str.size(); i++ )
if( str.substr( i, 1 ) == std::string( "¶" ) )
printf( "Found!\n" );
现在,在Linux中找不到该字符。当我把子串改成2的长度时发现。
for( int i = 0; i < str.size(); i++ )
if( str.substr( i, 2 ) == std::string( "¶" ) )
printf( "Found!\n" );
这个字符比较码如何转换为跨平台?
使用字符串str.compare()
和size()
解决:
std::string str = "Some string ¶ some text ¶ to see";
std::string char_to_compare = "¶";
for( int i = 0; i < str.size(); i++ )
if( str.compare( i, char_to_compare.size(), char_to_compare ) == 0 )
printf( "Found!\n" );
因为我正在编写一个跨平台应用程序,所以我希望我的代码可以在两个平台上运行。
在Windows中,我使用这段代码来比较2个单个字符。
for( int i = 0; i < str.size(); i++ )
if( str.substr( i, 1 ) == std::string( "¶" ) )
printf( "Found!\n" );
现在,在Linux中找不到该字符。当我把子串改成2的长度时发现。
for( int i = 0; i < str.size(); i++ )
if( str.substr( i, 2 ) == std::string( "¶" ) )
printf( "Found!\n" );
这个字符比较码如何转换为跨平台?
使用字符串str.compare()
和size()
解决:
std::string str = "Some string ¶ some text ¶ to see";
std::string char_to_compare = "¶";
for( int i = 0; i < str.size(); i++ )
if( str.compare( i, char_to_compare.size(), char_to_compare ) == 0 )
printf( "Found!\n" );