C++的新手,使用"=="的字符串相等性问题
New to C++, Issues w/ String Equality using "=="
我对c++有点陌生。我有Java和Python的使用经验。在Java中,有一个方便的函数".equals()"来比较两个字符串。在Java中当然不需要使用"==",因为它会测试两个对象是否完全相同,即在内存中是否有相同的位置。
然而,我在包括这个在内的各种网站上被告知,"=="是比较两个字符串是否相等的首选方式。如果您只是希望在两个字符串相等时执行一条语句,那么这似乎很好,因此
string one = "foo"
string two = "foo"
if (one == two)
{
cout << "They are equal";
}
当尝试使用相同的操作符或"!"时,事情就没有那么大的意义了。="对两个字符串求值,如果不相等则执行一条语句。
我已经尝试过通过((first==second)==0)和(first != second)和输出是true(1)。下面的程序应该在输入"DONE"后终止,但这并没有发生。
string first = "DONE";
string second = "";
while ((first==second)==0)
{
cout << "Enter a line of text: ";
cin >> second;
cout << ((first==second)==0);
}
正确的操作符是!=
,应该可以工作。
下面是关于字符串比较操作符的文档:http://www.cplusplus.com/reference/string/string/operators/
这个应该可以工作:
string first = "DONE";
string second = "";
while (first != second)
{
...
}
当然,如果你不改变秒,它将永远循环。
你读到line
而不是second
。
如果在此之后仍然遇到问题,请打印出从stdin读取的内容,以确保每次调用不会只从stdin读取一个字符,或者在末尾包含换行符(或类似的)。
cout << "'" << second << "'n";
顺便说一句:
(first==second)==0
与
相同(first==second)==false
与
相同first != second
相关文章:
- 编译包含字符串的代码时遇到问题
- setlocale的C++土耳其字符串问题
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 我的逻辑反转字符串中的元音有什么问题?
- 按字母顺序对C++问题中的子字符串索引进行分区
- 用户输入字符串的文件附加问题..C++
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 在将字符串放入字符串向量时遇到问题?
- 将文件复制到自定义位置,存在字符串转换问题
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 不确定出了什么问题(字符串输入)
- 反向和计数字符串的 C++ 问题
- 反转具有返回值的字符串时出现问题
- C++字符串问题-如何访问字符串元素
- public:静态常量字符串声明/初始化问题
- 在MySql中使用字符串操作函数有什么问题
- Libwesockets.h:lws_write:C++字符串到C的转换和发送问题
- 问题:字符串在另一个字符串上写入
- 日志文件输出的问题-字符串和c_str之间的差异- c++