我想将字符文字与字符串的第一个元素进行比较,以检查文件中的注释。为什么要使用字符?我想把它变成一个函数,它接受一个字符变量作为注释。我不想允许字符串,因为我想将其限制为单个字符的长度。
考虑到这一点,我认为最简单的方法是对字符进行寻址并将其传递给 std::string 的比较函数。然而,这给了我意想不到的结果。
我的代码如下:
#include <string>
#include <iostream>
int main ( int argc, char *argv[] )
{
std::string my_string = "bob";
char my_char1 = 'a';
char my_char2 = 'b';
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char1 << std::endl;
if (my_string.substr(0,1).compare(&my_char1)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char2 << std::endl;
if (my_string.substr(0,1).compare(&my_char2)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string << std::endl
<< "STRING 2 : " << "bob" << std::endl;
if (my_string.compare("bob")==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
}
给我...
STRING : b
CHAR : a
NOPE...
STRING : b
CHAR : b
NOPE...
STRING : bob
STRING 2 : bob
WOW!
为什么函数认为子字符串和字符不一样。正确比较字符和 std::string 变量的最短方法是什么?
(为了避免对我的问题重新分类而进行简短的咆哮......随意跳过)
当我说最短时,我的意思是出于对编码雄辩的渴望。请注意,这不是家庭作业问题。我是一名化学工程博士候选人,正在编码作为独立研究的一部分。当我询问效率时,我的最后一个问题被用户msw重新归类为“作业”(他也发表了讽刺的言论),我认为这是滥用的边界。我的代码可能会或可能不会被其他人重用,但我正在努力使其易于阅读和维护。我也有一个奇怪的愿望,即尽可能使我的代码尽可能高效。因此,关于效率和口才的问题。