C++ 分配「;输入Key";值转换为字符串[C+;+;]

C++ 分配「;输入Key";值转换为字符串[C+;+;],c++,string,C++,String,在这个相当简单的练习中,我必须接收用户输入,将所述输入存储到字符串中,通过引用将字符串传递给函数,最后修改字符串,以便toupper()函数“解析”每个字符。 但是,如果用户插入'q'作为输入,程序将停止说“再见”,或者如果他只是按Enter键,程序应该说类似“嘿,这个字符串是空的”。 现在真正的问题在最后一部分,因为我的代码无法处理用户只输入Enter键值的情况(老实说,即使我只是在Enter键后面输入一堆空格,也不会发生任何事情) void大写字母(std::string&); int ma

在这个相当简单的练习中,我必须接收用户输入,将所述输入存储到字符串中,通过引用将字符串传递给函数,最后修改字符串,以便toupper()函数“解析”每个字符。 但是,如果用户插入'q'作为输入,程序将停止说“再见”,或者如果他只是按Enter键,程序应该说类似“嘿,这个字符串是空的”。 现在真正的问题在最后一部分,因为我的代码无法处理用户只输入Enter键值的情况(老实说,即使我只是在Enter键后面输入一堆空格,也不会发生任何事情)

void大写字母(std::string&);
int main(){
使用名称空间std;
字符串ex2;

很抱歉对您的问题的错误解释,请尝试

if( (str.length()==1 && str[0]=='q') || str.length() == 0)
{}

可能会帮助您解决问题

只需检查输入的空字符串:
if(str.empty())
cin>>ex2
无法看到enter。它是空白并且已被丢弃。查看
std::getline
@user4581301您答对了。我使用了getline(cin,ex2)并将if语句修改为if(str[0]='\0'))现在它成功了!以@πάντα为例ῥεῖ '建议使用“<代码>空”。一,它更容易阅读和二,它可以捕获一些测试“0”可能错过的角情况。我认为在C++ 11标准之前不需要空终止。我使用了EMPTY()函数和GETLIN(CIN,String)函数(EMPTY()没有GETLILE()函数不工作。它运行得很顺利。谢谢!“ex2!=“Bye”,实际上是在尝试比较引用,“no,和
strcmp(ex2,“Bye”)
将无法编译。在3篇正确的帖子之后,我无法获得一个投票,我只是想这里的人们喜欢看错误的答案,而不是正确的答案,谢谢你的评论,自从我使用c/c++已经很长时间了,这一部分是有效的。正如我所说,唯一不起作用的部分是“空字符串都德”行。然后再试试str[0]=“r”,因为这是大多数操作系统中回车字符(输入按钮)的转义字符,但我不这样做会有助于您的情况,因为不可原谅的C++可能在按下回车按钮时不把“r”字符放入缓冲区中。“在3篇正确的帖子之后,我一张选票都投不上来,我猜这里的人喜欢看错误的答案,而不是正确的答案。”这就是生活,不是我们所做的每一件事都受到好评。我的答案分数为0,比你的帖子总数还要多。不要太担心,这会发生在每个人身上。
if( (str.length()==1 && str[0]=='q') || str.length() == 0)
{}