【发布时间】:2016-06-13 19:45:32
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
int n,t=0,k=0;
cin>>n;
char data[n][100];
int num[n];
for(int i=0;i<n;i++)
{
while(1)
{
cin>>data[i][t];
cout<<data[i][t]<<endl;
if(data[i][t]=='\n') break;
k++;
if(k%2==1) t++;
}
cout<<i;
num[i]=(t-2)/2;
k=0;
t=0;
}
for(int i=0;i<n;i++)
{
while(1)
{
cout<<data[i][t];
if(t==num[i]) break;
t++;
}
t=0;
}
}
这是我用 c++ 编写的代码,它给出了用户给出的每个单词的前半部分的偶数字符,但是在按下 enter 后给出输入时,循环应该中断,但循环没有中断
while(1)
{
cin>>data[i][t];
cout<<data[i][t]<<endl;
if(data[i][t]=='\n') break;
k++;
if(k%2==1) t++;
}
【问题讨论】:
-
data[i][t] 中的实际内容是什么?
-
您假设
cin默认情况下会在从流中读取的数据中包含换行符。这是不正确的。 -
这是我用 C++ 编写的代码 --
cin>>n; char data[n][100];-- 这不是有效的 C++。数组必须具有编译时大小。 -
与其自己搜索行尾,may I suggest
std::getline获取整行然后解析行with astd::stringstream?这种方法将这个问题减少到几乎与Read file line by line 重复。