将函数结果分配给变量的问题
Issues with assigning result of a function to a variable
#include <iostream>
#include <string>
using namespace std;
int main() {
string userInput;
int stringSize = 0;
userInput = "Hello";
userInput.size() == stringSize;
cout << "Size of userInput: " << stringSize << endl;
return 0;
}
我试图获得5个输出,但它返回0。我不知道怎么了。userInput
" Hello"的尺寸应为5,userInput.size()
应返回5。应该将其分配给可变字符串。旁注,谁能向我解释为什么它是" =="不" ="?如果我尝试使用" =",它不会编译,我会收到此错误:
main.cpp: In function ‘int main()’:
main.cpp:11:23: error: lvalue required as left operand of assignment
userInput.size() = stringSize;
^~~~~~~~~~
我的理解是" ="是分配的,而" =="是一个布尔比较,它是" true"或" false",具体取决于双方是否相等。我正在尝试将userInput.size()
的大小分配到变量中,因此我认为我应该使用" ="。也许这是问题的一部分?
这是要求的答案(信用paco):
您始终必须将要分配的值放在=
操纵器右侧的变量,然后将变量本身本身放在左侧。
您所做的是试图将stringSize
的值分配给userInput.size()
我的理解是" ="是分配," =="是一个布尔比较 这是" true"或" false",具体取决于双方是否相等。
到目前为止,您的理解是正确的。
我试图将UserInput.size()的大小分配到变量 所以我认为我应该使用" ="
通常,您不能编写5 = variable
。在作业中的左右与右不交换,订单很重要。
如果要为某个变量分配一个值,则该变量必须在分配的左侧上:variable = 5
。
我使用了此简化,但是函数大小()的结果就像我的示例中的5个。这称为a rvalue (例如"右价")。
因此,在您的情况下,stringSize = userInput.size();
是正确的,并将userInput
的大小设置为变量stringSize
(这称为a lvalue 一个可以分配给分配左侧的值)。
可以将lvalue视为过去使用的命名值,例如变量。rvalue不会持续使用它的使用,通常是函数调用的结果,或者我们通常称为"值"。
您可以将RVALUE存储在lvalue(int i = 2 + 3
)中,但是您不能将lvalue分配给rvalue。那就是您的问题的存在
编译器正在丢弃错误,因为您有一个rvalue userInput.size()
,并且正在将其视为lvalue,而是尝试通过尝试为其分配值。
userInput.size() = stringSize
更简单的例子是
int n = 1;
3 = n;
出于明显的原因,您不能仅仅更改3。在您的示例中,您的功能只是返回一个整数值...那么为什么要更改它呢?因此,您会收到错误
一个不同的视角:
您无法设置字符串的大小。std::string
类自动为您计算长度。
因此不需要表达式:
userInput.size() = stringSize;
要清除std::string
的内容,请使用clear()
方法:
userInput.clear();
=
是C,C 和其他编程语言中的任务运算符。
==
是右侧表达式或变量的值 左侧变量的值。
简单示例:
int x,y;
x=10;
y=10;
if(x==y)
printf("True");
else
printf("False");
输出将是:True
在您的情况下,您必须使用一个=
操作员并在变量的右侧使用功能分配。像这样的stringSize = userInput.size();
这是最终代码:
#include <iostream>
using namespace std;
int main()
{
string userInput;
int stringSize = 0;
userInput = "Hello";
stringSize = userInput.size(); //this line edited.
cout << "Size of userInput: " << stringSize << endl;
return 0;
}
请参阅此处的在线_C _编译器
- 为"adjacent"变量赋值时出现问题
- C++理解计算字符变量的问题
- 在通知提升间处理条件变量时未按住锁会导致问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 将十六进制值设置为用于填充的字符变量时出现问题
- 初学者问题:如何访问此变量?
- 关于仅正确使用二传手和变量的问题
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- C++ 多线程中的锁和条件变量问题
- C++grpc的一些变量问题
- 我如何加载多个脚本而没有变量问题
- 未初始化的变量问题C++
- C++和引脚工具 - IF语句非常奇怪的双变量问题
- 如何通过引用捕获异常来解决局部变量问题
- sscanf写入变量问题
- 影子变量问题Qt
- C++ 中的局部变量问题
- 跨平台条件变量问题
- Makefile变量问题,make想要创建"*.o"而不是foo.o bar.o等
- c++变量问题