遇到一个有关问题,关于字符串的输入,比较基础,但是确把握不住
遇到一个问题,关于字符串的输入,比较基础,但是确把握不住
从控制太读入若干行字符串,放到一个数组里,我写如下的循环,但是不知道怎么停下来,主要是cin>>这个对象重载>>返回流,我无法把握如何停下来。
// ACM2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int count=5;//初始化数组为5个
string *s1;//备用的
string* s=new string[5];//申请空间
int i=0;//index
while(cin>>s[i])//从控制台读入
{
if(i==count)//判断数组空间是否够读入
{
s1 = new string[2*count];//否则重新申请空间进行,并复制
for(int i=0;i<count;i++)
{
s1[i]=s[i];
}
delete []s;//销毁
s=s1;
count = count*2;//数组空间增长
}
}
for(int i =0;i<count;i++)//输出
{
cout<<s[i]<<endl;
}
return 0;
}
------解决方案--------------------
直接string就是了
string s;
1)cin>>s;
2)getline(cin,s);
3)getline(cin,s,' ');
------解决方案--------------------
读取一行
从控制太读入若干行字符串,放到一个数组里,我写如下的循环,但是不知道怎么停下来,主要是cin>>这个对象重载>>返回流,我无法把握如何停下来。
// ACM2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int count=5;//初始化数组为5个
string *s1;//备用的
string* s=new string[5];//申请空间
int i=0;//index
while(cin>>s[i])//从控制台读入
{
if(i==count)//判断数组空间是否够读入
{
s1 = new string[2*count];//否则重新申请空间进行,并复制
for(int i=0;i<count;i++)
{
s1[i]=s[i];
}
delete []s;//销毁
s=s1;
count = count*2;//数组空间增长
}
}
for(int i =0;i<count;i++)//输出
{
cout<<s[i]<<endl;
}
return 0;
}
C++
字符串读入
流
------解决方案--------------------
直接string就是了
string s;
1)cin>>s;
2)getline(cin,s);
3)getline(cin,s,' ');
------解决方案--------------------
读取一行
std::string line;
if(std::getline(std::cin, line))
{
//读取成功
}