int main()
{
string name;
while(cin>>name)
{
if(name=='\n')
break;
else
{
cout<<name;
}
}
cout<<"Exited";
}
这里我需要输入,直到用户没有输入或跳过新行。我无法完成代码。
答案 0 :(得分:5)
要观看:
using namespace std;
导致问题。getline()
而不是operator>>
,这样我们才能看到整行std::string
而不是C-array
字符。'\n'
,以便我们看到输出。结果:
#include <iostream>
#include <string>
int main()
{
std::string name;
while(std::getline(std::cin, name) && name != "")
{
std::cout << name << "\n";
}
std::cout << "Exited\n";
}
答案 1 :(得分:2)
新行字符'\n'
是一个空格字符,默认情况下会被运算符跳过&gt;&gt;用于输入流。而是使用例如成员函数getline
。
这是一个示范程序
#include <iostream>
int main()
{
char name[30];
while ( std::cin.getline( name, sizeof( name ) ) && name[0] )
{
std::cout << name << std::endl;
}
std::cout << "Exited\n";
return 0;
}
答案 2 :(得分:2)
您的代码中存在多个问题 首先,你不能放&#34; cin&gt;&gt;名字&#34;在条件下 这完全错了。
你有字符数组(名称[30]) 然后你想把它与用户的输入进行比较,你没有声明数组错误
然后再次在你的下一个条件名称==&#39; \ n&#39;对你想要的东西无效 在我们的cmd控制台中,我们只能放置一个您无法使用的字符&#39; \ n&#39;
在主要功能结束时你必须返回一些东西(可能令人困惑) 只写&#34;返回0;&#34;最后,它会没事的 我建议你使用这段代码::
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
char name[30];
while(1)
{
cin >> name;
if( name[0] =='E')
break;
else
{
cout<<name;
}
}
cout<<"Exited";
return 0;
}
如果用户输入“E&#39;如果条件变为真,我们就会退出。
答案 3 :(得分:1)
使用std :: string。
A + B => C