字符串分配中出错.(C++)
Error in Strings assignment. (C++)
我到处找过,我找到了一个用于php而不是c ++的。我正在为我的 into to c++ 类中的一个项目制作一个小控制台 rpg,我想避免使用函数和/或如果可能的话——但如果不是,我会使用它们。
示例代码:
int main(){
string pName;
string pWpnName;
int pDamage=0;
int wdSwrdD=1;
if (pDamage==wdSwrdD)pWpnName="Wooden Sword";
cout<<"Please enter a name";
cin>>pName;
pDamage++:
cout<<"Name: "<<pName<<endl;
cout<<"Weapon: "<<pWpnName<<endl;
return 0}
但是每当我这样做时,它都会输出:Name: pName
(就像它应该的那样)和Weapon:
.它只是保持空白,我有一种感觉这与我如何使用字符串有关......
你不了解命令式语言(C++就是其中之一)如何工作的基础知识。程序逐条语句执行,并且您的if
条件仅检查pDamage==wdSwrdD
一次 - 当执行流通过该语句时。因此,您稍后增加pDamage
的事实不会神奇地改变pWpnName
(并且您需要将比较运算符==
更改为赋值运算符=
除此之外,如果条件除此之外,但我认为这是一个错字)。
因此,您很可能需要一个循环,其中执行流反复通过您的if
语句(这就是创建循环的目的),但很难根据您提供的信息说更多的话。
您可以使用 getline() 函数:
cout<<"Please enter a name"<<endl;
getline(cin, pName);
pDamage++;
该函数可以从流中获取一行,将 std::cin 设置为 steam 参数,并将行输入分配给变量。
你的问题是你打错了一个错字:==
是相等比较,而=
是赋值。 因此,您的代码部分应该更改:
if (pDamage==wdSwrdD)
pWpnName=="Wooden Sword"; // here you're doing comparison
。自:
if (pDamage==wdSwrdD)
pWpnName="Wooden Sword"; // here you're doing assignment
大多数编译器应为此行为生成警告,因为它很容易出错,但可能很难捕获。
在您的程序中,您尚未初始化字符串,并且您正在接受 pName 的用户输入,因此它显示名称 .如果 pWpnName 在声明时没有初始化它,并且"if 条件永远不会变为真",因为您已经初始化了 pDamage=0 和 wdSwrD=1,并且我们知道 if(0==1) 永远不会为真,字符串 pWpnName 永远不会初始化为木剑,所以它显示为空白。
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错