在c ++中使用空格字符串

时间:2014-04-15 18:58:24

标签: c++

#include<iostream>
using namespace std;
int main()
{
string p;
int n,i;
cin>>n;
for(i=1;i<=n;i++)
{
    cin>>p;
    cout<<p<<"\n";
}
return 0;
}

HIII .. 我想拿两根琴弦,然后像前一样一张一张地打印出来。但当我拿n = 2并输入字符串&#34;我想去&#34;
它给出了输出:

i
wanna

它并没有问我第二个字符串。它正在取字符串,直到它得到一个空格。我应该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

您必须将语句中的迭代变量i的初始值更改为以下语句:

for(i=0;i<=n;i++)

答案 1 :(得分:2)

考虑使用std :: getline。

std::string name;
std::getline(std::cin, name);

上面的例子总结如下: std::cin input with spaces?

答案 2 :(得分:0)

您应该使用函数operator >>而不是std::getline。例如

#include <iostream>
#include <limits>

int main()
{
   int n;

   std::cin >> n;

   std::cin.ignore( std::numeric_limits<std::streamsize>::max() );
   // or simply std::cin.ignore();

   for ( int i = 1; i <= n; i++ )
   {
      std::string p;
      std::getline( std::cin, p );
      std::cout << p << "\n";
   }

   return 0;
}