如何使用c ++在没有readline的字符串中显示多个单词?

时间:2014-08-27 09:25:54

标签: c++

我正在使用Visual C ++ 6.0并且当前创建了一个程序,它将打印存储在字符串中的输出。

问题是当我输入带空格的单词时,只有第一个单词在输出中可见。

示例:

Enter your address: new york
new
Press any key to continue

我想要这个:

Enter your address: new york
new york
Press any key to continue

另外,我尝试使用getline但是当我输入单词时,它将首先打印空白区域,然后将最后一个输出存储在当前输出之前。

这是我的代码:

#include <iostream>
#include <string>

using namespace std;

void main()
{
  string address1;
  cout<<"Enter your address:";
  cin>> address1;
  // getline(cin, address1); code when using getline
  cout<<address1<<"\n";
}

4 个答案:

答案 0 :(得分:1)

使用std::getline (std::cin, address1);,而不是cin。因为cin将空格作为分隔符。

答案 1 :(得分:1)

这个怎么样?一种getline概念,假设换行符是'\ n',根据您的平台,unix或windows等根据需要进行更改

int main()
{
  string addrpart, address1;
  cout<<"Enter your address:";
  cin>> addrpart;
  while (addrpart != "x") {
    address1 += addrpart + " ";
    addrpart = "x";
    cin>> addrpart;
  }
  cout<<address1<<"\n";
}

答案 2 :(得分:1)

你去吧

#include <iostream>
#include <string>

using namespace std;

int main( int argc, char** argv )
{
  string userinput;

  cout << "Enter your address:";
  getline ( cin, userinput );
  cout << userinput;

  return 0;
}

$ g++ a.cpp -o app
$ ./app
Enter your address:new york
new york

答案 3 :(得分:1)

你这样做是正确的,但主要的问题是你在使用cin而你应该避免它并使用getline(cin,address1),因为cin只会占用一个字,它会不要在空格后输入任何内容。另一方面getline(cin,address1)可以带一个完整的句子和空格

阅读评论并使用此代码

#include <iostream>
#include <string>

using namespace std;

int main()//using int main()
{

  string address1;

  cout<<"Enter your address:";

  //cin>> address1; Don't use it

  getline(cin, address1);//use this

  cout<<address1<<"\n";

  return 0;//returning an integer 0
}