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

taking strings with whitespaces in c++

本文关键字:空格 字符串 c++      更新时间:2023-10-16
#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;
}

嗨。。我想取两个字符串,然后按照程序一个接一个地打印出来。但是当我取n=2并输入字符串"i want go"时
它给出的输出是:

i
wanna

它没有要求我提供第二个字符串。它一直在获取字符串,直到它出现空白。我该怎么办才能解决这个问题?

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

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

考虑使用std::getline。

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

以上示例总结自:std::用空格输入cin?

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

#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;
}